monad结构如何帮助保持纯度(在Haskell中),同时做不纯净的事情?例如,当你给出print "Hello"时,你是在执行纯代码还是不纯代码?这是一个非常微妙的细节,但有助于更好地理解函数式语言中纯净和不纯的概念。
发布于 2013-01-10 18:41:16
表达式
print "Hello"确实是纯净的。因为它不打印任何东西,而是构造一些东西,在执行时打印"Hello“。
下面是一个类比:
一位和尚在一张纸上写道:
Go to a bordell and do filthy things with the prostitutes there.我们能不能仅仅因为这个和尚写了通婚的指示,就指控他通婚呢?
发布于 2013-01-10 18:47:30
stackoverflow中的问题可能会回答您的问题:In what sense is the IO Monad pure?
简而言之,monad本身就是纯,但它可以发出不纯的指令。更具体地说,monads可以被视为一系列可组合的计算描述。这些计算中的一些可能是脏的(即有副作用),但描述本身是完全纯粹和干净的。
https://stackoverflow.com/questions/14255775
复制相似问题