关键字:haskell,type,type class,functor,applicative,monad
推荐:★★★★
难度:★★
豆瓣链接:https://book.douban.com/subject/4934481/
haskell的书不太多,像本书这样轻口味的更少。
正如本书开篇提到的。
Work on Haskell began in 1987 when a committee of researchers got together to design a kick-ass language.
[最初的工作始于 1987 年,一群学者聚在一起想设计一个吊到爆的编程语言]。
haskell设计的目的就是把你搞晕,总有重口味爱好者的。
这不是嘛,爱好数学的人们,看到这个语言,喜欢的不得了。
随着一阵阵眩晕和颤抖,得到了他们需要的快感。
本书则不同,以平淡的文字,描述着一件件惊天动地的事情。
这就是本书的魅力所在了吧,换一换风格,会有新的认识。
首先,目录是用缩进形式写的,haskell style啊。
后来发现,haskell erlang python,不知道怎么的互相影响。
列表解析呀,模式匹配啊,后来连go也同流合污了。
理解以后才明白,原来这就是函数式风格呀。
身为血统最纯正的函数式语言,haskell是一个贵族。
硬生生的用monad把世界分成两半了。
有副作用的,没有副作用的。
如果你从其他书中觉得monad难以理解,本书可以为你解惑。
正如其他概念functor, applicative一样,monad也是提炼出来的。
你发现很多函数互相调用,有套路可循。
可以将套路抽象出来,做一个运算控制器。
那么它很可能就是functor, applicative或者monad了。
只不过加上类型以后,把你搞晕了而已。
但是,也不能高兴的太早,对运算模式的抽象和对数据的抽象。
haskell走的很远。
其他语言因为缺乏原生机制来支持,所以往往不够精炼。
所以,学习haskell能让你拥有先进的思维方式。
在任何其他语言中,都可以写出不一般的代码。
很简单,你先实现一个运算控制器,然后当做类库使用就行了。
另外,本书monad和monoid看起来很像,其实是不同的概念。
我看了好几遍才发现,这居然是两个不同的单词。
只能怪自己对字母不敏感了。
总之,本书乐趣十足,是居家旅行必备图书。