monad 构造如何帮助保持纯度(在 Haskell 中)同时做不纯净的事情?例如,当print "Hello"
您执行纯代码或不纯代码时?这是一个非常微妙的细节,但有助于更好地理解函数式语言中纯度和杂质的概念。
问问题
631 次
2 回答
18
表达方式
print "Hello"
确实是纯洁的。因为它不打印任何东西,而是构造一些在执行时打印“Hello”的东西。
这是一个类比:
一位僧人在一张纸上写道:
Go to a bordell and do filthy things with the prostitutes there.
我们可以因为僧侣通奸而指责他,仅仅因为他写了一个从事通奸的指示吗?
于 2013-01-10T10:41:15.837 回答
6
stackoverflow 中的问题可能会回答您的问题:IO Monad 在什么意义上是纯的?
简而言之,monad 本身是纯的,但它可以发出不纯的指令。更具体地说,monad 可以被视为一系列可组合的计算描述。其中一些计算可能是脏的(即有副作用),但描述本身是完全纯净的。
于 2013-01-10T10:47:30.493 回答