======== IO Monad ======== .. meta:: :keywords: haskell io monad :description: haskell io monad explain 不得不说,作为一门装 `纯 `_ 的语言,在这个肮脏的世界,纠结的不是一点点。 装上了纯,就意味着画下了一条界线,线外的那些肮脏的事情是你不屑去做的(也是不能去做的,面子事大啊)。 然而现实的世界注定容不下纯粹的东西,就算你在自己的世界中保持再绝对的纯粹,你也无法避免和其他人打交道。而按照纯粹的理念把整个社会重构一遍却是更加不切实际的空想。 于是,你只能为自己吹下的牛逼而努力奋斗了。 佛祖说过:“世上万物都是可以随意被变幻的,你要想不被变幻掉,就要先知道自己是什么。” 那么我是什么呢?那些在不断变幻的世界中依然保持不变的东西,那个不动点,大概就是我了吧。 六根不净的僧人们常说:“酒肉穿肠过,佛祖心中留”。其实你追求的不只是这样一种境界而已么?然而酒足饭饱之后,谁又能保证佛祖还在心中,谁能证明? 幸运的是,在计算机的世界里,毕竟还有一些东西是可以保证,可以证明的。 你所寻找的,无非就是这样一个保证而已。有了它,你才可以安心把自己藏起。 或者,把世界藏起! 从此, 芸芸万物万千变幻尽在你把控之中。 你把这变幻叫做: `IO Monad `_ ;这个保证,便是 `类型系统 `_ 。 :: type IO a = World -> (a, World) instance Monad IO: (变幻 >>= g) 世界 = 新变幻 新世界 where 新变幻 = g a (a, 新世界) = 变幻 世界 return a = \世界 -> (a, 世界)