Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell和Python哪种编程语言更具功能性?_Python_Haskell_Functional Programming - Fatal编程技术网

Haskell和Python哪种编程语言更具功能性?

Haskell和Python哪种编程语言更具功能性?,python,haskell,functional-programming,Python,Haskell,Functional Programming,在学校的函数编程课程中学习了Haskell。我觉得跟哈斯克尔合作有点困难。我现在在Python上做了很多工作。Python非常容易使用 Python确实支持一些函数式编程结构 正在考虑重新访问函数式编程。哪种语言更适合编写代码?Haskell还是Python?为什么?Haskell是一种函数式编程语言,而Python只是具有函数式编程语言的一些特性。所以,这就解决了。Q.e.d 编辑:仅举一个例子,Python中缺少的是。这在大多数真正的函数式编程语言中是至关重要的 顺便说一句,谷歌刚刚推出。来

在学校的函数编程课程中学习了Haskell。我觉得跟哈斯克尔合作有点困难。我现在在Python上做了很多工作。Python非常容易使用

Python确实支持一些函数式编程结构

正在考虑重新访问函数式编程。哪种语言更适合编写代码?Haskell还是Python?为什么?

Haskell是一种函数式编程语言,而Python只是具有函数式编程语言的一些特性。所以,这就解决了。Q.e.d

编辑:仅举一个例子,Python中缺少的是。这在大多数真正的函数式编程语言中是至关重要的

顺便说一句,谷歌刚刚推出。

来自:

Haskell是一种高级纯函数式编程语言。它是一款开源产品,经过二十多年的尖端研究,可以快速开发出健壮、简洁、正确的软件

讽刺翻译:

  • “高级”=“并非适用于所有人”
  • “纯功能”=“绝对不适合所有人”
  • “二十多年了”=“但仍然不是每个人都喜欢它!”
  • “前沿研究”=“你可能会发现一个实际问题,你可以用它来解决,但我们仍在努力!”
  • “健壮、简洁、正确的软件”=“您是否缺少简单、易懂、明显、可读的软件?猜猜为什么!”

撇开玩笑不谈,函数式语言并不适合大多数人,也永远不会。有些人可以像一堆人一样思考,但我更喜欢电脑更努力地理解我的胡言乱语。

博尔德温说的话。Haskell是最“核心”的函数式语言之一,因为根本没有任何方法来维护可变状态

也就是说,Haskell(毫不奇怪)与大多数人接触到的所有命令式和混合模型语言都有很大的不同,因此,如果一个人来自VB或C(++)或Java等背景,那么学习它会有一条学习曲线

另一方面,Python有一个“功能展示和讲述”部分,其中一些功能特性可以在其他主要命令式环境中进行测试驱动


因此,如果在他最初的问题中,OP的“更好”是指“更具功能性”或“功能性土地的更好公民”(他后来更清楚地说明了这一点),那么Haskell将“轻而易举地”获胜。

虽然Python确实支持一些功能性构造,但Haskell是一种功能性语言。你还需要考虑的是,Haskell也是纯粹的功能性和懒惰的,这两个概念可能是你在Haskell发现困难的原因。如果是这样,请继续阅读

如果你有时间,你可能想考虑的是,学习另一种不那么复杂的功能性语言。我发现,在学习Haskell之前,学习一门不那么“激进的功能性”语言是值得迈出的一步。你可能想考虑OcAML(目标CAML),这是另一种功能性编程语言,它既不纯粹也不懒惰。因此,您可以使用一些命令式编程结构(引用、循环、可变数组等),并且在您真正需要之前,您不必处理monad


这完全取决于你愿意花多少时间重温函数式编程,以及你目前在这个范例中的背景。

这个问题突出了我对函数式编程的共同理解的一个不满。拥有闭包和一级函数等语言特性并不能使语言成为函数式编程语言。函数式编程既与特定的语言结构有关,也与特定的编程风格有关。Python有闭包、一流函数,是的,甚至还有一个名为“map”的函数,但该语言本身鼓励采用过程式、面向对象的命令式编程风格;所以,即使您使用了函数特性,您仍然必须进行编程


作为一种纯函数式语言,Haskell基本上要求一个程序采用声明式、函数式的风格,因此,毫不夸张地说,Haskell比Python“更具功能性”。

你会在其他地方发现许多批评,说Python程序员不应该使用像lambda这样的函数特性。亚历克斯·马泰利在这方面特别擅长。但是,如果您以Python程序员的身份进行函数式编程,您将无法理解为什么人们首先对函数式编程感兴趣。特别是,您将无法访问强大的静态类型系统和代数数据类型。这些工具绝对是Haskell思维模式的一部分

函数式编程与其说是一组特性,不如说是一种思维方式。要想在行动中看到这种思维方式并开始学习它,请查看约翰·休斯的论文。你从休斯那里学到的东西可以很容易地应用到哈斯克尔。事实上,Haskell更有可能迫使你学习新的思维方式。有了Python,您可以到处使用一些lambda,并自欺欺人地说您正在学习函数式编程。你不会的


也就是说,哈斯凯尔可以一下子吞下很多东西。如果您觉得困难,您可能想尝试或(以前称为PLT方案或DrScheme)。标准ML将向您介绍更多新想法,但这些人不会像勒索者或Haskell人那样齐心协力欢迎新来者。

没有更好的(功能性)语言,只有不同的语言。无论如何,python不是函数式语言。如果python实际上是函数式语言,这可能是主观的。事实上,Python包含命令式风格和可变状态,并在适合的地方选择了一些函数式ish结构