这几天来,我一直在思考Haskell中的函数式编程范例。我通过阅读教程和观看视频来做到这一点,但似乎没有什么能真正坚持下来。 现在,在学习各种命令式/面向对象语言(如C、Java、PHP)时,练习对我来说是一种很好的方式。但是因为我不知道Haskell有什么能力,而且有很多新概念可以利用,所以我不知道从哪里开始。
你是怎么学会哈斯克尔的?是什么让你真正“打破僵局”的?还有,开始练习有什么好主意吗?
这几天来,我一直在思考Haskell中的函数式编程范例。我通过阅读教程和观看视频来做到这一点,但似乎没有什么能真正坚持下来。 现在,在学习各种命令式/面向对象语言(如C、Java、PHP)时,练习对我来说是一种很好的方式。但是因为我不知道Haskell有什么能力,而且有很多新概念可以利用,所以我不知道从哪里开始。
你是怎么学会哈斯克尔的?是什么让你真正“打破僵局”的?还有,开始练习有什么好主意吗?
当前回答
我确实认为通过实例来实现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最好的方法。我希望它能帮助你。
其他回答
我确实认为通过实例来实现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最好的方法。我希望它能帮助你。
我建议加入#haskell irc频道并在那里提问。我就是这样学会哈斯克尔的。如果你像上面建议的那样使用Real World Haskell,实时回答你的问题会有很大帮助。许多聪明的人在#haskell上写haskell是为了好玩和盈利,所以你会得到很多好的输入。试一试!
不要试图用有趣的隐喻去阅读所有的单子教程。他们只会把你弄得更糟。
我的一些同事有很好的学习Haskell的经验!
教程针对的人谁有 命令式编程经验 语言,但还没有编程 函数式语言之前。
在这里也检查一下答案
我建议你首先从阅读BONUS教程开始,然后阅读Real World Haskell(在线免费)。加入#Haskell IRC频道,在irc.freenode.com上,并提出问题。这些人对新手都很友好,而且在过去的时间里帮了我很多。此外,在这里,在SO是一个伟大的地方,以获得帮助,你不能掌握的东西!试着不要气馁,一旦成功,你的想法就会被震撼。
奖金'教程将为您准备,并让您为真实世界哈斯克尔带来的惊险刺激做好准备。祝你好运!