7

モナド構造は、(Haskellで)純度を維持すると同時に、不純なことを行うのにどのように役立ちますか?たとえば、あなたが与えるとき、あなたprint "Hello"は純粋なコードを実行していますか、それとも不純なコードを実行していますか?これは非常に微妙な詳細ですが、関数型言語の純度と不純物の概念をよりよく理解するのに役立つものです。

4

2 に答える 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 はどのような意味で純粋ですか?

つまり、モナド自体は純粋ですが、不純な命令を発行することができます。もう少し具体的に言うと、モナドは一連の構成可能な計算記述と見なすことができます。これらの計算の一部は汚い (つまり、副作用がある) かもしれませんが、記述自体は完全に純粋でクリーンです。

于 2013-01-10T10:47:30.493 に答える