Haskell : モナドの実行順序は何によって規定されているのだろうか?

[id:sshi:20060903:p3]より。
私も、bind(>>=)の実装が実行順序を規定していると思います。
http://www.geocities.jp/lethevert/softwares/clean/gettingStarted19.html
上で考察していますが、bind(>>=)で引数を正格評価しないと、意図とは逆の順に評価されてしまうのではないかと思います。
Haskellには、Cleanの正格性注釈のような便利なものはないので、どのように正格評価を強制しているかというと、
http://www.sampou.org/haskell/a-a-monads/html/
の説明では、付けたしですよ、と説明されている「失敗」の存在が正格評価を行わせるキーポイントになっているのではないかと思います。
つまり、

instance Monad Maybe where
    Nothing  >>= f = Nothing
    (Just x) >>= f = f x
    return         = Just

のように、bind(>>=)の実装には、失敗を判定するためのパターンマッチが存在するので、関数適用する際に値が必要になるため、bind(>>=)の引数が正格評価されているのではないかと思います。
だから、失敗のないモナドを作れば、逆順に評価が進められるモナドになるのではないかと想像します。