[Haskell-cafe] Re: how do you deal with mplus?
jonathanccast at fastmail.fm
Thu Oct 9 14:15:03 EDT 2008
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
> Currently, there's no consensus concerning the laws that MonadPlus
> should obey.
More information about the Haskell-Cafe