对 haskell 与 monad 的理解 http://www.opengpu.org/bbs/viewthread.php?tid=2638&extra=page%3D1 haskell作为纯函数式语言如何处理IO 并不是真正的处理,只是通过类型系统将跟IO相关的“不纯”的代码和其他纯函数式代码隔离开。通过编译期类型检查进行保证。 具体实现就是通过叫 IO 的 type constructor [io] ,而这个 IO 就是 Monad 的一种。 Monad是什么 在数学上Monad是一门处理状态转换的数学理论。 对于haskell来说,Monad 就是一个 type class [monad] ,这个 type class 定义了一组接口,前面说的 IO 就是实现了这组接口的实例。
. 这些接口目的何在
这些接口的目的就在于保证操作的顺序执行,也就是说实现了这些接口的类型,使用do语法就可以编写顺序执行的语句了。 haskell 的 IO 类型就是利用这点保证IO操作的顺序执行,并通过类型系统将涉及IO和不涉及IO操作的函数清晰地区别开来。 [io] [url=http://www.haskell.org/ghc/docs/ ... base/System-IO.html]http://www.haskell.org/ghc/docs/ ... base/System-IO.html[/url] [monad] http://www.haskell.org/ghc/docs/ ... /Control-Monad.html from : http://www.yi-programmer.com/blo ... kell_and_monad.html |
<script src="tag.php?action=relatetag&rtid=2638" type="text/javascript"></script>