ふつける勉強会 10回目

http://haskell.g.hatena.ne.jp/to2y/20060903
今回はついにモナド。ボリュームが多いので、章を二週に分割することに。今日はMaybeまで。今日のポイントは、「モナドの実行順序は何によって規定されているのだろうか?」というもの。
モナドのミソはbindした処理が全部順序付けられて評価される、ということだと思うんだけど、ではその順序は何によって決まってるんだろう。モナド則?各モナドの実装?それとも処理系の裏技?
個人的には、Maybeやらの具体的なモナドのbindの実装がそれを規定している、と主張してみたが、確証なし。一般のモナド(bind)で期待するような評価順を裏切る順番で評価されるモナド、というのはモナド則を満たしながら書けるものなんだろうか。
例えば、評価を最後の式から行う逆Maybeとかか?明らかにそれは無理?

あ、あと、Kleisli tripleって何?っていうのもあるか。圏論の話になるんかなぁ。ちゃんと理解できる気がしない。