
9 Oct
2008
9 Oct
'08
2:15 p.m.
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