1
dreamersdw 2011-10-21 03:42:55 +08:00
Monad 是一种设计模式,如果遇到问题 X 请使用方法 Y
如果返回值有可能为空,使用 Maybe Monad 如果返值可能有零个也可能有多个,使用 List Monad 如果要读取全局信息, 使用 Reader Monad 如果要在执行过程中记录些什么,使用 Writer Monad 如果想读取又修改某些东西,使用 State Monad ...... 我们完全可以弃这些 Monad 不用,而手工处理各种情况,只是那样的话,代码会变得冗长繁琐。 即使是 IO 操作也不必非得依赖 Monad。源自 Haskell 的 clean 语言使用 uniqueness typing system 技术实现 IO |
2
cloud_dai 2011-11-08 20:00:11 +08:00
任何的模式都是为解决一类问题,Monad也是。 就是computational context,
先理解value, type, typeclass 及一点闭包的概念。 然后从Functor-> Applicative Functor -> Monad去理解学习。 具体类容多。 这个探索的路径。 我会写个这个方面的总结blog(现在连blog都没有)的。 |
3
wshcdr 2019-05-24 16:18:36 +08:00
抛开那些理论,你可以把 monad 理解成是一个 Context
看下这个例子 Just 2 >>= (\x -> Just(x + 1)) 帮助你理解 |