Monad-进阶理解
来源:互联网 发布:www.web pro seo.com 编辑:程序博客网 时间:2024/05/02 06:44
一 一个例子(按此贴的理解:http://blog.csdn.net/crazyhacking/article/details/8270930)
定义:
data Position t=Position t deriving (Show)
stagger (Position d)=Position (d+2)crawl (Position d)=Position (d+1)
rtn x=x
x>>==f=f x
使用:
treasure pos=pos>>==
stagger >>==
stagger >>==
crawl>>==
rtn
运行:
treasure (Position 0)
Position 5
it :: Position Integer
理解:
1 从这个例子上来说,可以把monad视为对一堆函数的封装。
>>== rtn 是这种封装的标志。
2 >>==是类型下降,rtn是类型提升。(二者均不是关键字)
>>==首先把类型Position d中取出d进行计算,最后rtn又把d提升为Position d.
参考:http://blog.pmonad.com/2012/07/06/monad-purpose.html
http://www.iteye.com/topic/147443
http://cookoo.iteye.com/blog/27006
- Monad-进阶理解
- 如何理解 Free Monad?
- Monad
- Monad
- Atitit 理解Monad attilax总结Atiti
- haskell Monad: Status Monad
- continuation monad
- haskell monad
- Monad transformers
- 图解 Monad
- Monad详解
- haskell Monad 2 Write monad
- haskell Monad 3 Reader Monad
- View的进阶理解
- Scalaz(25)- Monad: Monad Transformer-叠加Monad效果
- continuation monad 2
- Monad你我他
- Monad 最简介绍
- 收藏来自http://blog.csdn.net/zhoufoxcn/article/details/2453803 的文章
- 第一家公司第二面的笔试
- 搜索引擎的那些事(开篇)
- 【Cocos2d-x游戏引擎开发笔记(4)】系统动画
- Hibernate的unsaved-value
- Monad-进阶理解
- 第二家公司的笔试、机试、面试。
- 物理地址,虚拟地址,线性地址及逻辑地址
- 理解$HandlerLabel HANDLER $HandleLabel宏
- 我的一些SQLServer 优化
- 设计模式之观察者模式 及 c++ 实现
- Linq to DataSet 之四(修改表中字段和DataView)
- 如何做一个出色的程序员
- 从30岁到35岁:为你的生命多积累一些厚度