这几天来,我一直在思考Haskell中的函数式编程范例。我通过阅读教程和观看视频来做到这一点,但似乎没有什么能真正坚持下来。 现在,在学习各种命令式/面向对象语言(如C、Java、PHP)时,练习对我来说是一种很好的方式。但是因为我不知道Haskell有什么能力,而且有很多新概念可以利用,所以我不知道从哪里开始。
你是怎么学会哈斯克尔的?是什么让你真正“打破僵局”的?还有,开始练习有什么好主意吗?
这几天来,我一直在思考Haskell中的函数式编程范例。我通过阅读教程和观看视频来做到这一点,但似乎没有什么能真正坚持下来。 现在,在学习各种命令式/面向对象语言(如C、Java、PHP)时,练习对我来说是一种很好的方式。但是因为我不知道Haskell有什么能力,而且有很多新概念可以利用,所以我不知道从哪里开始。
你是怎么学会哈斯克尔的?是什么让你真正“打破僵局”的?还有,开始练习有什么好主意吗?
当前回答
第一个答案很好。为了达到专家级别,你应该和一些专家一起读博士学位。
我建议您访问Haskell页面:http://haskell.org。这里有很多材料,还有很多Haskell中最新的东西的引用,这些都是Haskell社区批准的。
其他回答
我还可以推荐另一个Haskell教程作为介绍。
另一个很好的学习资源(可能在中级水平上),它对我帮助很大,据我所知,在其他答案中没有提到,是Brent Yorgey的Typeclassopedia,可以在Monad Reader(第13期)中找到
它以一种非常容易理解的风格编写,并包含(除许多其他内容外)以下介绍性建议:
Haskell专家的智慧有两个关键: 了解类型。 获得对每个类型类及其与其他类型类之间关系的深刻直觉 类型类,通过熟悉许多示例来支持。
Monad Reader本身对于函数式程序员(不仅仅是Haskell程序员)来说是一个绝对的宝藏。
如果您只有命令式/OO语言的经验,我建议使用更传统的函数式语言作为垫脚石。Haskell是非常不同的,你必须理解很多不同的概念。我建议先使用ml风格的语言(比如f#)。
我很喜欢看这个用Haskell进行函数式编程的13集系列。
C9讲座:Erik Meijer博士-函数式编程基础: http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/
不要试图用有趣的隐喻去阅读所有的单子教程。他们只会把你弄得更糟。
我确实认为通过实例来实现Haskell的特性是最好的开始方式。
http://en.wikipedia.org/wiki/Haskell_98_features
这里是棘手的类型类,包括单子和箭头
http://www.haskell.org/haskellwiki/Typeclassopedia
对于现实世界的问题和更大的项目,记住这些标签:GHC(最常用的编译器),Hackage(libraryDB), Cabal(构建系统),darcs(另一个构建系统)。
一个集成的系统可以节省您的时间:http://hackage.haskell.org/platform/
此系统的包数据库:http://hackage.haskell.org/
GHC编译器的wiki: http://www.haskell.org/haskellwiki/GHC
在Haskell_98_features和Typeclassopedia之后,我认为您已经可以自己找到并阅读有关它们的文档
顺便说一下,你可能想要测试一些GHC的语言扩展,这些扩展将来可能会成为haskell标准的一部分。
这是我学习haskell最好的方法。我希望它能帮助你。