monad的引入个人感觉效果不是太好。
如果可以先介绍monad的数学定义,之后介绍Haskell中的定义monad的方法,并讨论这两种定义之间的联系(如通过return/join/fmap定义monad和通过return/bind(>>=)定义monad这两种方法之间的等价性),然后再通过大量的例子来展示monad在haskell编程中的实际使用方法,特别是do block的运用,可能效果会更好一点。
当然,如果能在引入monad之前,利用上述类似的方法,引入functor,natural transformation,(甚至,我个人觉得,为了让monad的概念更清晰,应该在引入functor之前,引入category的定义),这样效果可能更好一点。虽然对这些概念的理解不是理解Haskell中monad的充分条件,但却可以有效地消除诸如“为什么Haskell中的monad要这样定义”的烦躁情绪。
这里,我给出一个wikibook上介绍Haskell中用到的category theory基础的链接,可以作为阅读过程中帮助理解的一个参考。当然,最有效的方法,还是自己反复思考,以提炼出自己的理解
https://en.wikibooks.org/wiki/Haskell/Category_theory
如果非得按照书中引入monad的方式来理解monad,我的感觉是,强迫自己反复思考monad和do block之间的相互转换,可能会是一个比较好方法。详细内容可以参考书中do notation这一章节
插图非常漂亮,写作的手法也很生动,有很多梗在里面,尤其是最后几章关于monad的章节命名,喜欢克林伊斯特伍德的朋友应该会有会心一笑 :)
但是,最后一章读完,是书没写完的感脚啊。。。
monad的引入效果不太好
《Learn You a Haskell for Great Good!》热门书评
-
中文版
35有用 0无用 fleuria搬砖叔 2010-11-20
刚刚发现内容被豆瓣和谐了,重新发下链接http://fleurer-lee.com/lyahps: 神奇的捅到了豆娘的g点吐槽不能,欢迎大家加入阿北找不着北小组:http://www.douban.com/group/ieba/pps:人家不反党不反人民没看过让子弹飞没来得及围观方叫兽基本上人畜无害...
-
纸质版: 征集试读 & Wait for your pull request
9有用 0无用 fleuria搬砖叔 2013-06-03
受人民邮电出版社的委托,lyah简体中文纸质版的初稿终于接近尾声了。我负责将前八章重新整理,MaskRay负责补完后续部分。就个人感情而言,lyah可以算是对我影响最大的一本书。在开始《Haskell趣学指南》的翻译时还没有电脑,带着一只电子词典、一本打印稿、两本笔记本,接近一年的时间下来慢悠悠地翻...
-
读过最好的Haskell入门书
2有用 1无用 atlarge 2011-10-22
强烈推荐,最好的Haskell入门书。入门但绝不肤浅,该讲的都讲到了,而且深入浅出。网上有好多版本,建议找一个正式完整版的,较早的版本不完整,影响书的质量。读完它再去看《Real World Haskell》,相信会功力大涨。如果看了Haskell,突然对Category Theory的感兴趣了,推...
-
monad的引入效果不太好
2有用 0无用 悟道洞穴人 2014-06-09
monad的引入个人感觉效果不是太好。如果可以先介绍monad的数学定义,之后介绍Haskell中的定义monad的方法,并讨论这两种定义之间的联系(如通过return/join/fmap定义monad和通过return/bind(>>=)定义monad这两种方法之间的等价性),然后再通...
-
行文质量差强人意
1有用 1无用 hshq 2014-07-24
几年前网上看过,后半部分当然只能看英文。最近推荐项目组购入这本书,第一个借阅,发现各种小毛病真多。中文说不好的话,译者、编辑都有责任。-----------------------------不该出现的分割线------------------------------现在字数够了么?...
书名: Learn You a Haskell for Great Good!
作者: [斯洛文尼亚] Miran Lipovaca
出版社: No Starch Press
副标题: A Guide for Beginners
出版年: 2011-4-11
页数: 400
定价: 44.95
装帧: 平装
ISBN: 9781593272838