モナドの実行順

http://d.hatena.ne.jp/sshi/20060903/p3
勉強会で出た話題を書き散らしたら、いろんな人からトラックバックを貰えて嬉しい限りでありますが、今余裕がないのでちゃんと反応できてません。ごめんなさい。
結論としては、モナドの仕組み自体は実行順を規定しておらず、MaybeモナドやIOモナドが実行順を制御した(のと同等の)結果を得られるのは、個々のモナド実装がうまいことできてるから、ということでいいのかな。ただ、モナドの型定義がどれくらいその「うまいこと」に寄与しているのかはまだよくわからず(多分、http://d.hatena.ne.jp/lethevert/20060904/p1 のあたりの話はそういう話なんだと思う)。
モナドを使わずに、例えばMaybeモナドやStateモナドと同等の(つまり、実行順というか命令並び順に依存する結果を出す)ことをするhaskellコードと、モナドの型には沿っているものの命令並び順で同じ結果を出すコードを書ければ、モナドの働きとモナドモナド則の限界(というか実体)が理解できるかなあ。というか、それ自分でやってみないと理解できる気がしない。余裕できたら書こう。