
21 Jul
2005
21 Jul
'05
9:18 p.m.
G'day all. Quoting oleg@pobox.com:
We chose c === (true; true), t' === e' === fail, t === e === true. Thus,
Good point. It becomes even more obvious when you have a monad transformer. If e === (lift m), then this:
mif (mif c t' e') t e
translates to (lift m), but this:
mif c (\x -> mif (t' x) t e) (mif e' t e)
translates to lift m `mplus` lift m, which is definitely different, since m may alter the transformed monad. Cheers, Andrew Bromage