Home

Lambda

I hope the field of computer science never loses its sense of fun.

Home Notes About RSS

2016-11-27
Haskell踩坑总结

这个是我前些年自学Haskell时整理的资料,现在可能有点过时了,不过应该还有些参考价值吧。

入门参考

  • 参考 http://stackoverflow.com/questions/1012573/getting-started-with-haskell
    • 先看LYAH,看到Functor时可以开始做haskell 99 problems。不用全做完,做到差不多有感觉了开始看LYAH的Functor, Applicative和Monad。
    • RWH的Monad部分,看得懂就多看几章,看不懂就先放着。
    • 接着可以刷 https://wiki.haskell.org/Tutorials#Using_monads 这个页面里Monad的一些paper和文章。
      • How to build a monadic interpreter in one day: 挺好的文章,写一个迷你的解释器,可看可不看,建议不看而去看Philip Wadler的两篇Monad的论文。
      • Monad Transformers Explained, MonadCont under the hood: 这两篇讲的是MT和CPS,建议弄懂Monad后再挑战这种更蛋疼的概念。
      • IO inside: 是讲IO Monad的,这种Monad比较简单,文章写得很好。
      • The Haskell Programmer’s Guide to the IO Monad - Don’t Panic: 没看,讲范畴论(category theory)的,不做研究不需要了解,建议等想深入了再学。
      • Systematic Design of Monads: 没看,不过看上去挺有趣的。
      • All About Monads: 可以看一部分,有些内容比较难,那些东西晚点看。
      • 还有一些文章我也没接触,大家可以挑自己感兴趣的看看。
    • 和上面可以同时进行的是刷Philip Wadler关于Monad的论文,推荐Monads for functional programmingThe essence of functional programming
    • 感觉对Monad有一些掌握后可以尝试用Haskell写一个Lisp的解释器 https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours
  • 接下来可以看看Penn的CIS194,这门课每年的在Monad之后讲的内容不一样,包括一些并发、GUI和类型推导理论里的最前沿的内容。可以看看然后做做里面的作业。
  • 接着可以开始做NICTA course,非常好的Haskell进阶课程,形式也很有意思。(强烈推荐这个课程,里面的代码一定要尽量写完,非常有意思)
  • 这个阶段后看自己的兴趣选择喜欢的东西学学。

资料汇总

编辑器

  • Emacs: Haskell mode
  • Spacemacs: Haskell Layer (我目前用的,基于Emacs的Haskell mode)
  • Vim: Haskell mode
  • Intellij: Haskell plugin

推荐Emacs,Vim没用过,但Emacs的Haskell mode比Vim的出名很多(带有bias),所以Emacs写Haskell应该更方便。IntelliJ不够智能,快捷键不好用,对cabal和stackage集成效果也不如Emacs。(前几年的情况,现在不知道了)

Haskell安装

  • 推荐使用Haskell官网的Haskell Platform。

注:这个好像过时了,现在比较流行用stackage,毕竟cabal hell太讨厌了。


Zeqing Guo

scribble

Home Notes About RSS