学习Haskell以学习Scala

jaz*_*090 42 haskell functional-programming scala purely-functional

我读了几个问题,比如Scala和Haskell讨论两种语言的优点或者要学习哪些,但我已经知道我想学习Scala.我是uni的Java程序员,现在主要使用PHP.

我想学习Scala,因为它看起来像个人项目的Java改进,我也想学习一种函数式语言来提高我作为程序员的知识.

我想知道将Haskell作为函数式编程的介绍是否是一个好主意,因为它纯粹是函数式的,所以我应该正确地学习它而不是偶然使用Scala中的一些函数而不知道为什么?

我也喜欢将Haskell用于个人项目等,因为它看起来很棒,但我并没有真正看到它的许多真实应用,似乎更多地用于学术事物,因此想要学习它以获得功能性理解然后继续斯卡拉

Tom*_*ett 85

作为一个来自Java的人,以及Scala是Haskell的门户药物,我碰巧认为这是一个好主意(首先学习Haskell)!

Haskell在概念上是一种比Scala更简单的语言,如果你的目标是学习如何在功能上进行编程,那么如果你从Haskell开始,你就会情不自禁.根据设计,Scala支持一种编码的"遗留模式",如果你不愿意,你不需要过多地改变你的Java(或PHP)习惯.我认为这是一个战略决策 - 而且是一个好的决定! - 旨在提高Java风暴家伙的使用率.

但那不是你!你真的学习新东西感兴趣 ...那么为什么不全力以赴呢?在纯粹的环境中学习函数式编程,没有杂乱和回归旧习惯的诱惑,将会使大脑中的概念变得明确.

然后通过各种方式返回Scala并了解它与Haskell的区别; 它在某些方面都较弱,而在其他方面则更强,但你会更好地了解这些差异.

  • +1非常好写.'Scala是Haskell的门户药物'.这是真的,你可以从Agda或coq转到haskell.从haskell到Scala.但通常你真的不想,因为你错过了这些功能.也许看看"在哈斯克尔上开始运行"的话题,请参阅:http://bos.github.com/strange-loop-2011/talk/talk.html#(1)用幽默来表达:也许(也许) !)当你完美地掌握haskell时,将会有对商业项目的haskell开发人员的需求.也许到那时每个人都在这里写学习coq!(或agda!......或下一件大事) (10认同)
  • 我同意.学习Haskell将以Scala无法实现的方式将您从正常习惯中移除.它还将使您远离传统的面向对象,并学习另一种思考类(类型类)的方法.我可以推荐这本书http://www.amazon.com/Programming-Haskell-Graham-Hutton/dp/0521692695 (7认同)
  • 我想知道他是否会在被Haskell的美女吸引之后"回到Scala"...... :-) (6认同)
  • Haskell是Coq和类别理论等各种硬性药物的门户药物:) (4认同)

Per*_*ega 17

我不会这样做.如果你直接去Scala(你的最终目标),你可以节省时间.无论如何你都将学习函数式编程,但由于Scala"不那么纯粹",你将能够开始在Scala中编写程序,使用类似Java的结构,这将使转换更简单.

即使你进入Haskell,你的第一个程序将比以后的程序具有更少的"功能质量",因为只有练习才能改进.启动Scala你的第一个程序将是"质量较差",因为你的第一个Java或PHP程序,但通过练习,你将得到改善.把时间花在不相关的任务上希望它们可以提供帮助,这可能会导致你浪费那段时间.

专注于你的目标.如果那是Scala,那就去吧.

更新:我认为可能与这个问题有关.它提出了生产力(交付软件)与寻求"纯粹知识"的观点.

  • +1如果您的目标是学习Scala,那么学习Scala:大多数教材都假定具有Java背景,因此明确帮助完成这一过渡,特别是**不要因为教你Haskell而开始! (3认同)

Chr*_*ner 17

我从Java背景来到Scala.最初我只关注Scala作为更好的Java.随着时间的推移,我开始在Scala中使用越来越多的功能概念.最终,我觉得我需要对函数式编程有更纯粹的理解.就在这时,我离开了,学习了Haskell.

当我回到Scala时,我发现使用功能样式更加容易,而且我之前努力解决的一些概念更有意义.

您不必学习Haskell成为一名优秀的Scala开发人员,但我认为一旦您在Scala达到某个级别,对函数式编程概念有了更深入的了解,这确实有帮助.


cbr*_*ino 7

直接从Scala开始而没有首先使用任何纯函数式编程语言的风险是,您可能会经常被程序解决方案所吸引.

我不会尝试Haskell作为函数式编程的介绍:不是说它特别难 - 它的语法非常简洁 - 但它绝对是非常奇特的(即使在函数式编程的特殊世界中)我觉得你应该尝试一下您可以更轻松地将语言移植到Scala,例如Racket或plain Scheme.

为了更好地理解我的意思,请查看Haskell,Scala和Scheme中的列表推导.