Dra*_*gno 7 monads haskell functional-programming
monad构造如何帮助维持纯度(在Haskell中),同时做出不纯净的东西?例如,当你给出的print "Hello"是执行纯粹或不纯的代码时?这是一个非常微妙的细节,但有助于更好地理解功能语言中纯度和杂质的概念.
Ing*_*ngo 17
表达方式
print "Hello"
Run Code Online (Sandbox Code Playgroud)
确实纯洁.因为它不打印任何东西,而是构造一些在执行时打印"Hello"的东西.
这是一个类比:
一位和尚在一张纸上写道:
Go to a bordell and do filthy things with the prostitutes there.
Run Code Online (Sandbox Code Playgroud)
我们可以因为通奸而指责僧侣,只因为他写了一份通奸指令吗?
stackoverflow中的问题可能会回答你的问题:IO Monad在什么意义上纯粹?
简而言之,monad本身是纯粹的,但它可以发出不纯的指令.更具体一点,monad可以被视为一系列可组合的计算描述.这些计算中的一些可能是脏的(即具有副作用),但描述本身是完全纯净和干净的.
| 归档时间: |
|
| 查看次数: |
541 次 |
| 最近记录: |