みどりねこ日記

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

2012-04-16から1日間の記事一覧

Haskellのモナド2(6)

最初の方に、return xは”なにもせずに”ただxを返すのだと説明しました。この考えは、Stateモナドのように副作用を起こすモナドにおいて使うとき、初めて色々な意味を持ちます。すなわち、Stateモナドの計算は内部状態を書き換えることでその後の計算の結果に…

Haskellのモナド2(5)

Stateモナドはコンテナという見方より、計算と見たほうがいいと思います。Stateモナドは「内部の値に依存したり、書き換えたりする計算」を表しています。例えば、3体問題(互いに相互作用する3体以上からなる系を扱う問題)のモデリングをしているとしま…

Haskellのモナド2(4)

Haskellのリスト内包表記と、リストモナドの形が似ているのは興味深いですね。例えば、下のコードは三平方の定理を満たすものをリストアップする関数です。 pythags = [(x, y, z) | z <- [1..], x <- [1..z], y <- [x..z], x^2 + y^2 == z^2] これをリストモ…

Haskellのモナド2(3)

リストモナドの計算(型[a]で終わるもの)は「0個以上の値が結果となる計算」を表しています。例えば、三目並べをモデリングしているとします。ちょっとだけわざとらしいのですが、ここではゲームが進行する可能性のある状態を見つけることを問題とします。…