IO Monad

2011-03-16 黄毅

不得不说,作为一门装 的语言,在这个肮脏的世界,纠结的不是一点点。

装上了纯,就意味着画下了一条界线,线外的那些肮脏的事情是你不屑去做的(也是不能去做的,面子事大啊)。

然而现实的世界注定容不下纯粹的东西,就算你在自己的世界中保持再绝对的纯粹,你也无法避免和其他人打交道。而按照纯粹的理念把整个社会重构一遍却是更加不切实际的空想。

于是,你只能为自己吹下的牛逼而努力奋斗了。

佛祖说过:“世上万物都是可以随意被变幻的,你要想不被变幻掉,就要先知道自己是什么。”

那么我是什么呢?那些在不断变幻的世界中依然保持不变的东西,那个不动点,大概就是我了吧。

六根不净的僧人们常说:“酒肉穿肠过,佛祖心中留”。其实你追求的不只是这样一种境界而已么?然而酒足饭饱之后,谁又能保证佛祖还在心中,谁能证明?

幸运的是,在计算机的世界里,毕竟还有一些东西是可以保证,可以证明的。

你所寻找的,无非就是这样一个保证而已。有了它,你才可以安心把自己藏起。

或者,把世界藏起!

从此, 芸芸万物万千变幻尽在你把控之中。

你把这变幻叫做: IO Monad ;这个保证,便是 类型系统

type IO a = World -> (a, World)
instance Monad IO:
    (变幻 >>= g) 世界 = 新变幻 新世界
                        where 新变幻 = g a
                              (a, 新世界) = 变幻 世界
    return a = \世界 -> (a, 世界)

blog comments powered by Disqus

转载请注明出处,收藏或分享这篇文章到: