当前位置:  开发笔记 > 编程语言 > 正文

哪个是更具功能性的编程语言,Haskell还是Python?

如何解决《哪个是更具功能性的编程语言,Haskell还是Python?》经验,为你挑选了4个好方法。

在学校的功能编程课程中学过Haskell.发现Haskell有点难以使用.现在已经在Python上做了很多工作.Python很容易使用.

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

正在考虑重新审视功能编程.什么是更好的代码语言?Haskell还是Python?为什么?



1> Boldewyn..:

Haskell 一种函数式编程语言,而Python 只具有函数式编程语言的一些特性.所以,这已经解决了.QED

编辑: Python中缺少的只是举一个例子,就是递归函数调用的优化.这在大多数实际函数式编程语言中至关重要.

顺便说一下,谷歌搜索产生了这篇不错的文章.



2> Norman Ramse..:

你会在其他地方发现许多关于Python程序员不应该使用像lambda这样的功能特性的批评.Alex Martelli特别擅长这一点.但是,如果您将函数式编程作为Python程序员进行处理,那么您将无法理解为什么人们首先对函数式编程感兴趣.特别是,您将无法访问功能强大的静态类型系统和代数数据类型.这些工具绝对是Haskell心态的一部分.

功能编程并不是一组功能,而是一种思考方式.要想看看这种思维方式并开始学习它,请查看John Hughes 撰写的" 为什么功能编程很重要"一文.你从Hughes那里学到了什么,你可以很容易地在Haskell中应用.事实上,Haskell更有可能迫使你学习这种新的思维方式.使用Python,你可以在这里和那里使用一些lambdas,并欺骗自己,你正在学习函数式编程.你不会.

也就是说,Haskell可以同时吞下很多东西.如果您发现困难,您可能需要尝试标准ML或球拍(以前称为PLT Scheme或DrScheme).标准ML将为您介绍更多新想法,但是这些人并没有采取行动来欢迎新手,就像Racketeers或Haskell人那样.


我认为强大的类型系统是*a*主要的吸引力.一个强大的宏观系统也是一个主要的吸引力,我认为这解释了LISP的一些受欢迎程度.Erlang不仅因其功能特性而受欢迎,而且因为它的可靠性和可扩展的并行性.另外,让一个主要的硬件制造商支持你并没有什么坏处.爱立信是电话和Erlang,因为Sun是计算和Java.也许更多.

3> mipadi..:

这个问题突出了我对函数式编程的共同理解之一.具有闭包和第一类函数等语言功能并不能使语言成为函数式编程语言.函数编程与特定的语言结构一样,都与特定的编程风格有关.Python有闭包,一等函数,是的,甚至是一个叫做"map"的函数,但语言本身鼓励程序化,OOP,命令式编程风格; 因此,即使您使用了功能特性,您仍然需要进行编程.

作为一种纯粹的函数式语言,Haskell基本上强制要求一个声明性的,功能性的程序,所以Haskell比Python更"功能性".


一流的函数需要适当的匿名lambdas,以及合理的节省空间的尾调用,这些都不是Python的.否则我全心全意地同意.参看 http://lambda-the-ultimate.org/node/3532#comment-50319

4> CharlieP..:

虽然Python确实支持一些功能构造,但Haskell 一种函数式语言.你还需要考虑的是,Haskell也是纯粹的功能懒惰,这两个概念可能是你在Haskell中遇到困难的原因.如果是这种情况,请继续阅读.

你可能想要考虑的是,当然,如果你有时间,那就是学习另一种不那么复杂的功能性语言.我发现在转向Haskell之前学习一种不那么"具有攻击性的功能"语言是值得采取的步骤.您可能需要考虑另一种函数式编程语言OCaml(Objective Caml),它不是纯粹的也不是懒惰的.因此,一些命令式编程结构将可供您使用(引用,循环,可变数组等),并且您不必在实际需要之前处理monad.

这完全取决于您愿意花时间重新访问函数式编程的时间,以及您在同一范例中的当前背景.


同样,*Haskell确实提供了可变数组,引用和循环*.它们不是默认值:IORef/IOArray/Control.Monad.for等.
@dons:这不是关于语言能做什么(小心图灵的tarpit),而是关于语言变得容易的东西.
推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有