Skip to content
thzt edited this page Apr 4, 2016 · 1 revision

Book Information

Review by [thzt]

  • Rank: ★★★★
  • Hard: ★★★
  • Tag: Laziness, Monad, Monad transformer, Cabal, IO, Conduit, Yesod, Idris, Parser combinator, Functional dependencies, Type family, Attribute grammar, Testing, GADT, Architecting
  • Reviews:

这本稍微厚一点,400多页,内容丰富,

以前翻过一些,被书名迷惑了,浅尝辄止,

这几天,重新看过,发现真是一本好书。


介绍Haskell的书,比起其他工业级语言来说,

真是少之又少,大部分书,介绍到Monad就结束了,

特别不过瘾,根本不知道实际项目是如何用Haskell进行开发的。


这本书就不同了,总共16章,5个Part,

Part 1的前5章就把基础知识讲完了,

后面干一番大事业是肯定的了,

印象深刻的是,图形化讲解thunk,非常容易理解,

不过,如果顺便讲一下WHNF会更好,这一点很遗憾。


后面几章是Part 2,以Data Mining的一个实际例子开始,

让大家看到了Monad transformer的重要性,

紧接着介绍了Haskell对并行和并发,分布式的处理方案,

逼格杠杠的。


看完这些,对那些GHC extension也不那么害怕了,

反正都是对扩展各种用,用到爽为止。


然后就到Part 3了,笔锋一转,

开始玩Resource handling了,IO,Conduit乱入,

介绍了Error处理方式,怎么处理文件,用流的方式处理IO。


当然,对于这么强大的语言,处理文本肯定也得有,

Parser combinator,连接数据库,Yesod搞web应用,都可以。


DSL是人们津津乐道的事情,无论是外部DSL和内部DSL大家都想搞,

除了前文提到的Parser,Haskell还支持Type level编程,

涉及了多参数Type class中的Functional dependencies,

以及GHC的扩展Type family,很好玩。


要完成一个项目,文档,测试,架构都得谈,

这本书也谈了这些,好实战派啊,

甚至专门介绍了Functional Programming的一些最佳实践,

与OOP进行了对比。


这是一本看完了,才发现居然完了的书。

感觉每个部分包含的信息量都非常大,

不是一本介绍到Monad就『且听我下回分解』的书,

干货不少。


建议对Haskell感兴趣的小伙伴,重新刷一下此书,

书名貌似是人家作者谦虚的说法,

连Dependent type都提了,Idris就差完整的介绍了,太谦虚了。