>>682
あの、そういうことじゃないんですよ。
たとえば、sequence の実装は↓のように foldr つかってるんだけど
すべてのmonadicな値を*評価*してしまうんです。

sequence ms = foldr k (return []) ms
where
k m m' = do { x <- m; xs <- m'; return (x:xs) }

>>648の要求は「条件が合ったら以降のリスト要素を評価したくない」といっていて、
あなたの回答は要件を満たせていませんよと言ってるんです。