答复: Monad浅析(Java伪代码)
http://www.iteye.com/topic/1114416
今天来看到这篇帖子。先说明我没详细把楼主的原文细读完了。我也分享一些我对Monad的简单的理解。其实我觉得楼主所讲的Monad侧重于StateMonad
我先说说Monad,其实这东西理解起来我觉得很简单,类似于一个Box的理念
程序代码是运行在机器中的,外面的世界就像在盒子外一样。
程序自身的世界是可推导的,而外面的世界是不可知的,可推导的世界,都可以用纯函数来描述,而不可知的世界就要变通一下了。
比如IO,我们可以看成,程序要到RealWorld中取一个东西,所以,RealWorld就像一个不可知的Box。所以,比如,我要取当前机器的IP,那个IP地址类型,在Haskell中可以用这样的类型来表示
test1 :: Int -> Int test1 = do a <- (*2) b <- (+10) return ( a + b ) test2 :: Int -> Int test2 = (*2) >>= \a -> (+10) >>= \b -> return (a+b){-命令式语言中的写法 test1(n) { a=n*2 b=n+10 return a+b }}-