みどりねこ日記

よくわからないけど、頑張りますよ。

Haskellのモナド2(6)

最初の方に、return xは”なにもせずに”ただxを返すのだと説明しました。この考えは、Stateモナドのように副作用を起こすモナドにおいて使うとき、初めて色々な意味を持ちます。すなわち、Stateモナドの計算は内部状態を書き換えることでその後の計算の結果に影響をおよぼすことが出来ます。IOモナドを使った時も、同じような動作をすると言えるでしょう(IOはStateの特別なケースといえるからです)。

return xはこれを通常しません。returnによってもたらされた計算は、一般的に副作用を持ちません。モナド

return x >>= f == f x

がこれを保証しています。