在学校的功能编程课程中学过Haskell。发现Haskell有点难以使用。现在已经在Python上做了很多工作。 Python很容易使用。
Python确实支持一些函数式编程结构。
正在考虑重新审视功能编程。什么是更好的代码语言? Haskell还是Python?为什么呢?
答案 0 :(得分:38)
Haskell 是一种函数式编程语言,而Python 只是函数式编程语言的一些功能。所以,这已经解决了。 Q.e.d。
编辑:optimization of recursive function calls只是提供一个示例,而Python缺少的是什么。这在大多数真正的函数式编程语言中至关重要。
顺便说一下,谷歌搜索产生了this nice article。
答案 1 :(得分:33)
你会在其他地方发现许多关于Python程序员不应该使用像lambda这样的功能特性的批评。 Alex Martelli特别擅长这一点。但是,如果您将函数式编程作为Python程序员进行处理,那么为什么人们首先会对函数式编程感兴趣,您将无法理解。特别是,您将无法访问功能强大的静态类型系统和代数数据类型。这些工具绝对是Haskell心态的一部分。
功能编程并不是一组功能,而是一种思维方式。要了解这种思维方式并开始学习,请查看约翰休斯的论文Why Functional Programming Matters。你从Hughes那里学到了什么,你可以很容易地在Haskell中应用。事实上,Haskell更有可能强迫你学习这种新的思维方式。使用Python,你可以在这里和那里使用一些lambdas,并欺骗自己,你正在学习函数式编程。你不会。
也就是说,Haskell可以同时吞下很多东西。如果您发现困难,可能需要尝试Standard ML或Racket(以前称为PLT Scheme或DrScheme)。标准ML将向您介绍更多新想法,但是这些人并没有像Racketeers或Haskell那样一起欢迎新人。
答案 2 :(得分:11)
这个问题突出了我对函数式编程的共同理解之一。具有闭包和第一类函数等语言功能不会使语言成为函数式编程语言。函数式编程与编程的特定样式一样多,因为它与特定的语言结构有关。 Python有闭包,第一类函数,是的,甚至是一个叫做“map”的函数,但是语言本身鼓励程序化,OOP,命令式编程风格;因此,即使您使用了功能特性,您仍然需要编程。
作为一个纯函数式语言,Haskell基本上要求一个程序采用声明式,功能样式,因此,Haskell比Python更“功能性”。
答案 3 :(得分:7)
虽然Python确实支持一些功能构造,但Haskell 是一种功能语言。你还需要考虑的是,Haskell也是纯粹的功能和 lazy ,这两个概念可能是你在Haskell中遇到困难的原因。如果是这种情况,请继续阅读。
当你有时间的时候,你可能想要考虑的是学习另一种不那么复杂的功能性语言。我发现在转向Haskell之前学习一种不那么“具有攻击性的功能”语言是值得采取的步骤。您可能需要考虑另一种函数式编程语言OCaml(Objective Caml),它不是纯粹的也不是懒惰的。因此,一些命令式编程结构将可供您使用(引用,循环,可变数组等),并且您不必在实际需要之前处理monad。
这完全取决于您愿意花时间重新访问函数式编程的时间,以及您在同一范例中的当前背景。
答案 4 :(得分:0)
Boldewyn说。 Haskell是中最“硬核”的函数式语言之一,因为根本没有任何方法可以保持可变状态。
也就是说,Haskell(毫不奇怪)与大多数人接触到的所有命令式和混合模式语言截然不同,因此,如果一个人来自一个背景,就会有一个学习曲线,如果一个人来自,VB或C(++)或Java。
另一方面,Python提供了一个“功能展示和讲述”部分,其中一些功能特性可以在一个主要强制要求的环境中进行测试驱动。因此,如果在他最初的问题中,OP的“更好”意味着“更多功能”或“更好的功能土地公民”(因为他已经更清楚了),那么Haskell“胜利”了。
答案 5 :(得分:-4)
Haskell是一种先进的纯函数式编程语言。作为一项二十多年前沿研究的开源产品,它可以快速开发出健壮,简洁,正确的软件。
讽刺译: