我花了几天时间试图理解Haskell中的函数式编程范式。我通过阅读教程和观看屏幕录像来实现这一目标,但似乎没有什么真正的效果。
在学习各种命令式/OO语言(如C、Java、PHP)时,练习是我走过的良好途径。但由于我不知道Haskell能做什么,而且有许多新概念要使用,所以我不知道从哪里开始。
那么,你是如何学习Haskell的?是什么让你真正“打破了僵局”?另外,有什么好的起步练习想法吗?
我花了几天时间试图理解Haskell中的函数式编程范式。我通过阅读教程和观看屏幕录像来实现这一目标,但似乎没有什么真正的效果。
在学习各种命令式/OO语言(如C、Java、PHP)时,练习是我走过的良好途径。但由于我不知道Haskell能做什么,而且有许多新概念要使用,所以我不知道从哪里开始。
那么,你是如何学习Haskell的?是什么让你真正“打破了僵局”?另外,有什么好的起步练习想法吗?
尝试用它编写简单程序。
你可以在各种教科书中找到示例任务。
我不建议只看Haskell/FP教科书,只需尝试使用它进行简单的事情:计算、字符串操作、文件访问。
当我解决了十几个问题后,我就克服了困难 :)
之后,阅读许多高级概念(Monad、Arrow、IO、递归数据结构),因为Haskell是无限的,并且这些概念有很多。
我认为通过示例来实现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 的最佳方式。希望它能帮到您。
建议先阅读BONUS的教程,再阅读《Real World Haskell》(免费在线阅读)。加入#Haskell IRC频道,位于irc.freenode.com上,并提出问题。这些人非常适合新手,并在过去帮助过我很多。此外,在SO(Stack Overflow)上也是一个获取帮助的好地方!尽量不要灰心丧气,一旦理解了,你会大吃一惊。
BONUS的教程将为您打下基础,让您准备好迎接《Real World Haskell》的刺激之旅。祝你好运!
如果你只有命令式/面向对象编程语言的经验,我建议使用更传统的函数式编程语言作为过渡。Haskell非常不同,需要理解许多不同的概念才能进一步学习。我建议先尝试一种ML风格的语言(例如F#)。
第一个答案非常好。为了达到专家级别,您应该与一些专家一起攻读博士学位。
我建议您访问Haskell页面:http://haskell.org。在那里,您可以找到大量的材料,并且有很多参考资料是由Haskell社区认可的最新资料。