On Thu, 2008-10-09 at 20:20 +0200, apfelmus wrote: > Daryoush Mehrtash wrote: > > Assuming A, B, C are monadic operation. How do you read the following > > function: > > > > do > > A 'mplus' B > > C > > > > I expect this to translate to: > > > > (A 'mplus' B) >>= C > > It translates to > > (A `mplus` B) >> C > > > Can I then say it is equivalent to: > > > > (A >>=C) mplus (B >>=C) > > Sounds like a desirable law, but it doesn't always hold.
It holds for a couple of interesting monads, though. In particular, it holds for [] and for back-tracking or parallel parsers. > See also > > http://www.haskell.org/haskellwiki/MonadPlus > > Currently, there's no consensus concerning the laws that MonadPlus > should obey. jcc _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
