开始学习Haskell

754

我花了几天时间试图理解Haskell中的函数式编程范式。我通过阅读教程和观看屏幕录像来实现这一目标,但似乎没有什么真正的效果。

在学习各种命令式/OO语言(如C、Java、PHP)时,练习是我走过的良好途径。但由于我不知道Haskell能做什么,而且有许多新概念要使用,所以我不知道从哪里开始。

那么,你是如何学习Haskell的?是什么让你真正“打破了僵局”?另外,有什么好的起步练习想法吗?


14
http://tryhaskell.org/ - Kirk Broadhurst
15个回答

16

尝试用它编写简单程序。

你可以在各种教科书中找到示例任务。

我不建议只看Haskell/FP教科书,只需尝试使用它进行简单的事情:计算、字符串操作、文件访问。

当我解决了十几个问题后,我就克服了困难 :)

之后,阅读许多高级概念(Monad、Arrow、IO、递归数据结构),因为Haskell是无限的,并且这些概念有很多。


14

我认为通过示例来实现Haskell的特性是最好的入门方式。

http://en.wikipedia.org/wiki/Haskell_98_features

这里有一些棘手的类型类,包括单子和箭头

http://www.haskell.org/haskellwiki/Typeclassopedia

针对现实世界的问题和大型项目,请记住这些标签:GHC(最常用的编译器),Hackage(库数据库),Cabal(构建系统),darcs(另一个构建系统)。

集成系统可以节省您的时间:http://hackage.haskell.org/platform/

该系统的软件包数据库:http://hackage.haskell.org/

GHC编译器的维基百科页面:http://www.haskell.org/haskellwiki/GHC

在了解 Haskell_98_features 和 Typeclassopedia 后,您应该已经能够自行查找并阅读相关文档。

顺便说一下,您可能想测试一些 GHC 的语言扩展,这些扩展将来可能成为 Haskell 标准的一部分。

这是我学习 Haskell 的最佳方式。希望它能帮到您。


13

13

如果你只有命令式/面向对象编程语言的经验,我建议使用更传统的函数式编程语言作为过渡。Haskell非常不同,需要理解许多不同的概念才能进一步学习。我建议先尝试一种ML风格的语言(例如F#)。


Elm 可能是这些替代方案中最接近、最有用和最适合初学者的。 - Pedro Rolo
1
我不同意通过临时路线(如F#)进行传递。对我来说,这就像是喝伏特加,你必须迅速地把它喝完。虽然这样更痛苦,但也有乐趣。对我来说,临时路线只会导致更多的混乱。 - daparic

11

第一个答案非常好。为了达到专家级别,您应该与一些专家一起攻读博士学位。

我建议您访问Haskell页面:http://haskell.org。在那里,您可以找到大量的材料,并且有很多参考资料是由Haskell社区认可的最新资料。


3
抱歉,但在这里使用博士学位的论点就像说你必须有一把价值300美元的厨房刀才能成为一名好厨师。即使是Haskell之父Simon Peyton Jones也没有博士学位。在这里和在任何其他领域,实践和坚持是通向专业知识的途径。 - Petras Purlys

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接