G'day all.

Slight nit...

Quoting ok <[EMAIL PROTECTED]>:

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
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to