学习Haskell以学习

我读过一些问题,例如Scala与Haskell讨论了两种语言的优缺点或需要学习的语言,但是我已经知道我想学习Scala。 我是uni的Java程序员,现在主要使用PHP。

我想学习Scala,因为它看起来像是对个人项目Java的改进,并且我还想学习一种功能语言,以提高我作为程序员的知识。

我想知道学习Haskell作为函数式编程的入门是一个好主意,因为它纯粹是函数式的,因此我会适当地学习它,而不是在Scala中使用函数式的零散而又不知道为什么吗?

我也想将Haskell用于个人项目等,因为它看起来很棒,但是我并没有真正看到它在现实世界中的许多应用,似乎更多地用于学术方面,因此想学习它以获得功能上的理解然后继续 到斯卡拉。

6个解决方案
85 votes

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

从概念上讲,Haskell是一种比Scala简单得多的语言,如果您的目标是学习如何进行功能编程,那么从Haskell开始就一定会这样做。 通过设计,Scala支持一种“传统模式”编码,在这种情况下,如果您不想这样做,则不必真正改变Java(或PHP)习惯。 我认为这是一个战略决定,也是一个很好的决定!这意味着要提高Java顽强支持者的采用率。

但这不是你! 您实际上对学习新知识感兴趣...那么为什么不全力以赴呢? 在纯净的环境中学习函数式编程,而又不会陷入混乱和陷入旧习惯的诱惑中,这将使您的大脑中的概念更加明确。

然后,一定要回到Scala,了解它与Haskell的不同之处。 它在某些方面既较弱,又在某些方面更强,但是您将在更好的基础上理解这些差异。

Tom Crockett answered 2020-08-05T09:04:36Z
17 votes

我是从Java背景来到Scala的。 最初,我只是专注于Scala作为更好的Java。 随着时间的流逝,我开始在Scala中使用越来越多的功能概念。 最终,我觉得需要对函数式编程有更深入的了解。 正是在这一点上,我离开了,学习了Haskell。

当我回到Scala时,我发现使用功能样式要容易得多,而我以前苦苦挣扎的一些概念更有意义。

您不必学习Haskell就可以成为一名优秀的Scala开发人员,但是我认为,一旦您在Scala中达到某个水平,对函数式编程概念的更深入了解确实会有所帮助。

Chris Turner answered 2020-08-05T09:05:06Z
17 votes

我不会那样做。 如果直接进入Scala(您的最终目标),则可以节省时间。 无论如何,您都将学习函数式编程,但是由于Scala是“不够纯净的”,因此您可以开始在Scala中使用一些类似Java的结构来编写程序,这将使转换变得更加简单。

即使您进入Haskell,您的第一个程序的“功能质量”也不会比后来的程序高,因为只有实践才能改善这一点。 从Scala开始,您的第一个程序的质量将与Java或PHP的第一个程序一样“低劣”,但是通过实践,您会有所提高。 花时间在无关的任务上,希望它们可以帮助您,这可能会导致您浪费时间。

专注于您的目标。 如果那是Scala,那就去吧。

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

Pere Villega answered 2020-08-05T09:05:39Z
7 votes

直接从Scala开始而不先玩任何纯函数式编程语言的风险是,您可能会过于频繁地被过程解决方案所吸引。

不过,我不会尝试Haskell作为函数式编程的入门:并不是说它特别困难-它的语法非常简洁-但它绝对是非常独特的(即使在函数式编程的特殊世界中),我认为您应该尝试使用 您可以更轻松地将语言移植到Scala,例如Racket或Plain Scheme。

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

cbrandolino answered 2020-08-05T09:06:09Z
4 votes

我先学了Haskell,然后学了Scala,从不后悔。 如果您先学习Haskell,您将对FP有了更深入的了解。 您会对FP背后的概念以及它们为何重要的理解会被扎堆。Scala的大部分内容都来自Haskell(IMHO)。 具有Haskell背景将更有意义。 不要回避! 您的努力将得到回报。

Eric answered 2020-08-05T09:06:29Z
0 votes

对我来说,我想学习Scala和函数式编程。 因此,很简单,我正在学习Scala。 我的学习资料是Programming Scala。 在阅读了有关syntx和内容的早期章节之后,我跳过了涉及OO内容的章节,而跳到了涉及功能编程内容的第8章。 在那里,我让自己与FP斗争。

我阅读了这个以FP方式编写的scala代码并对其进行了分析。 您想学习Scala以获得“ ...个人项目Java的改进”。 和Haskell进行FP简介。 因此,看来,首先,您想提高您的Java项目的生产力,然后再将FP视为副作用。 为了提高工作效率,您必须精通该语言。 学习和掌握该语言有很多东西,而掌握该语言的唯一方法是必须用该语言编写代码。 在学习/使用Scala时,即使您愿意,也无法避免FP出局。 我一直在阅读Scala博客(这本书也是),当涉及到FP概念时,作者总是不遗余力地进行解释。 您不必担心不会通过Scala路线掌握FP。 是的,在学习Scala时,您可以像这样从Haskell汲取灵感。 或者如上面的Chris Turner所指出的,当您已经使用Scala高效时,您可以深入研究更多的FP。

您想去A点,为什么不直接去A点呢? 如果您经过B点(Haskell)的路线,您将不得不推迟Pere Villega提到的生产率。

Win Myo Htet answered 2020-08-05T09:07:00Z
translate from https://stackoverflow.com:/questions/7594337/learning-haskell-with-a-view-to-learning-scala