日本語訳何て言うの。
何やらMonadを扱う関数は下記の3つのルールを守れという事だそうな。
- return a >>= f が f a と同義。
- f >>= return が f と同義。
- f >>= (\x -> g x >>= h) が (f >>= g) >>= h と同義。合成の優先順位が変わっても問題ないように、という意味。
でもこのルールから外れるようなパターンってあるのか?
引数取らないでMonadで返すとかか・・・。
2010/9/14 追記
getLineとかは引数取らないわけだけど、どうなんだろうかね。
あくまでなるべく守ろうとかそんなんなのかな。