[Haskell-cafe] About mplus

ajb at spamcop.net ajb at spamcop.net
Wed Sep 5 23:49:44 EDT 2007


G'day all.

Slight nit...

Quoting ok <ok at cs.otago.ac.nz>:

> I've been thinking about making a data type an instance of MonadPlus.
> From the Haddock documentation at haskell.org, I see that any such
> instance should satisfy
>
> 	mzero `mplus` x = x
> 	x `mplus` mzero = x
> 	mzero >>= f     = mzero
> 	v >> mzero      = mzero

As discussed previously, that last "law" is wrong.  In particular, it
can't be true of any monad transformer:

     lift fireMissiles >> mzero /= mzero

> but is that all there is to it?  Are there no other requirements for
> MonadPlus to make sense?

It's proposed to split nondeterminism-like monads and error catch-like
monads to allow for some other laws:

     http://haskell.org/haskellwiki/MonadPlus_reform_proposal

Cheers,
Andrew Bromage


More information about the Haskell-Cafe mailing list