首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么纯功能语言而不是“不纯”功能语言?

为什么纯功能语言而不是“不纯”功能语言?
EN

Stack Overflow用户
提问于 2009-11-24 22:36:06
回答 5查看 3.9K关注 0票数 5

对于一个不是理论计算机科学家的人来说,学习像Haskell或Erlang这样的纯函数式语言,而不是像Python或D编程语言的版本2这样的“不纯”语言,有什么好处呢?我的论点如下:

  1. 没有一个范例是完美的。单一范式的语言,无论是什么范式,都是非常有限制性的。
  2. Python或D将使您在完成实际工作时轻松进入函数式编程。Haskell或Erlang会强迫你同时学习功能风格,然后你才能对它们做任何感兴趣的事情。

编辑:所谓“不纯”的功能语言,我真正指的是强多范式语言w/ a功能风味,而不是一些非功能性强功能语言。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-11-24 23:03:24

这一切都取决于正在努力实现的目标。如果你的目标是用一种函数式语言编写生产代码--一种“纯”的函数式语言会使它变得更加困难。

但是,如果你试图学习新的概念,“纯”语言会给你好处,让你远离功能概念的标记。一旦您对差异有了明确的理解,您就可以进入一个混合环境--比如F#,但在此之前,很容易采用面向对象的方式来处理事情,因为这就错过了功能方法的优点。

在其他一些帖子中,我提出了一个更好的学习F#的方法是首先让我们说哈斯克尔(并且被否决了),但是如果你学习F#去做OOP而不是什么

票数 12
EN

Stack Overflow用户

发布于 2009-11-28 06:35:32

你几乎回答了你自己的问题:

Haskell或Erlang会强迫你同时学习功能风格,然后你才能对它们做任何感兴趣的事情。

实际上,根据你所说的“感兴趣”的含义,你可以在一周内在Haskell工作。

任何人学习Haskell的主要原因(语言理论家已经知道了,而其他类型的理论家忙于证明定理而不需要编程)是学习Haskell将改变您对编程的思考方式。特别是类型系统,列表理解(失窃的Python-最高形式的赞扬),以及编程与模式匹配。您将能够在您所做的所有编程中使用您的许多新想法。哈斯克尔会强迫你以其他语言不会的方式去思考新的想法。

Erlang是一种令人尊敬的语言,但与Haskell的类型系统毫无可比性。

如果你喜欢保罗·格雷厄姆,你可以在他的文章“打破平均水平”中读到更多关于这条推理的文章,尤其是关于“模糊悖论”的部分。只要用Haskell代替Lisp :-)

票数 11
EN

Stack Overflow用户

发布于 2009-11-24 23:08:37

如果你的“新”语言只是你已经知道的一个小小的排列,那么你学到的就很少了。这就像在问,“为什么我能找到一个方言教练来教我用苏格兰拉丁语说话,为什么要学汉语呢?”我想如果你喜欢和一个无赖交谈的话,那就好了,但你并没有真正扩展你的专业知识。

学习一门功能语言会教你一种看待事物的新方法。不纯或混合范式语言(如OCaml )也很好,但使用这些不纯元素作为拐杖以避免以新的方式看待问题是很有诱惑力的。不,函数式语言不是灵丹妙药,但它们确实有很多有趣的好处,如果你学习一种有“功能组件”但不像真正的函数式语言的语言,你就会失去这些好处。

例如,在像Haskell这样的纯函数语言中,状态非常小心地与程序的其余部分隔离。这使得在其他语言中非常困难的各种优化变得微不足道。例如,状态是并行处理的敌人。在Haskell中,您只需查看函数的类型,就可以100%地确信它不会产生任何副作用。

这种思维方式在处理不可变数据的函数中,可以构造某种纯函数语言可以教您的东西。我不是说纯函数式语言是“最好的”,但它们有它们的好处。这是你腰带上的另一个工具。如果你坚持熟悉的东西,你就不会得到那个工具。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1793411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档