在学校的功能编程课程中学过Haskell.发现Haskell有点难以使用.现在已经在Python上做了很多工作.Python很容易使用.
Python确实支持一些函数式编程结构.
正在考虑重新审视功能编程.什么是更好的代码语言?Haskell还是Python?为什么?
Haskell 是一种函数式编程语言,而Python 只具有函数式编程语言的一些特性.所以,这已经解决了.QED
编辑: Python中缺少的只是举一个例子,就是递归函数调用的优化.这在大多数实际函数式编程语言中至关重要.
顺便说一下,谷歌搜索产生了这篇不错的文章.
你会在其他地方发现许多关于Python程序员不应该使用像lambda这样的功能特性的批评.Alex Martelli特别擅长这一点.但是,如果您将函数式编程作为Python程序员进行处理,那么您将无法理解为什么人们首先对函数式编程感兴趣.特别是,您将无法访问功能强大的静态类型系统和代数数据类型.这些工具绝对是Haskell心态的一部分.
功能编程并不是一组功能,而是一种思考方式.要想看看这种思维方式并开始学习它,请查看John Hughes 撰写的" 为什么功能编程很重要"一文.你从Hughes那里学到了什么,你可以很容易地在Haskell中应用.事实上,Haskell更有可能迫使你学习这种新的思维方式.使用Python,你可以在这里和那里使用一些lambdas,并欺骗自己,你正在学习函数式编程.你不会.
也就是说,Haskell可以同时吞下很多东西.如果您发现困难,您可能需要尝试标准ML或球拍(以前称为PLT Scheme或DrScheme).标准ML将为您介绍更多新想法,但是这些人并没有采取行动来欢迎新手,就像Racketeers或Haskell人那样.
这个问题突出了我对函数式编程的共同理解之一.具有闭包和第一类函数等语言功能并不能使语言成为函数式编程语言.函数式编程与特定的语言结构一样,都与特定的编程风格有关.Python有闭包,一等函数,是的,甚至是一个叫做"map"的函数,但语言本身鼓励程序化,OOP,命令式编程风格; 因此,即使您使用了功能特性,您仍然需要进行编程.
作为一种纯粹的函数式语言,Haskell基本上强制要求一个声明性的,功能性的程序,所以Haskell比Python更"功能性".
虽然Python确实支持一些功能构造,但Haskell 是一种函数式语言.你还需要考虑的是,Haskell也是纯粹的功能和懒惰,这两个概念可能是你在Haskell中遇到困难的原因.如果是这种情况,请继续阅读.
你可能想要考虑的是,当然,如果你有时间,那就是学习另一种不那么复杂的功能性语言.我发现在转向Haskell之前学习一种不那么"具有攻击性的功能"语言是值得采取的步骤.您可能需要考虑另一种函数式编程语言OCaml(Objective Caml),它不是纯粹的也不是懒惰的.因此,一些命令式编程结构将可供您使用(引用,循环,可变数组等),并且您不必在实际需要之前处理monad.
这完全取决于您愿意花时间重新访问函数式编程的时间,以及您在同一范例中的当前背景.