[英]Monadic impurity and Haskell's purity. How they are combined?
monad構造如何幫助維持純度(在Haskell中),同時做出不純凈的東西? 例如,當您給出print "Hello"
,您是在執行純粹還是不純的代碼? 這是一個非常微妙的細節,但有助於更好地理解功能語言中純度和雜質的概念。
表達方式
print "Hello"
確實純潔。 因為它不打印任何東西,而是構造一些在執行時打印“Hello”的東西。
這是一個類比:
一位和尚在一張紙上寫道:
Go to a bordell and do filthy things with the prostitutes there.
我們可以因為通奸而指責僧侶,只因為他寫了一份通奸指令嗎?
stackoverflow中的問題可能會回答你的問題: IO Monad在什么意義上純粹?
簡而言之,monad本身是純粹的 ,但它可以發出不純的指令。 更具體一點,monad可以被視為一系列可組合的計算描述。 這些計算中的一些可能是臟的(即具有副作用),但描述本身是完全純凈和干凈的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.