I'd like to put a "me too" on that one. This part of the class
hierarchy is currently a bit inexpressive. I've been annoyed by the
fact that if I want to express in the type signature of a function
that a monad has a failure mechanism, I'm forced to go all the way up
to MonadPlus, which makes it look like something fully
nondeterministic is happening, when really I'm just possibly failing.

Also, mplus and morelse are quite different things, and it would be
nice to have both even in a monad supporting mplus. For instance, in
the list monad,
mplus = (++)
but
morelse [] ys = ys
morelse (x:xs) ys = (x:xs)

 - Cale

On 21/03/06, Ashley Yakeley <[EMAIL PROTECTED]> wrote:
> Does this come under the "standard libraries" topic? I would like to see
> the MonadPlus class disambiguated:
>
> class Monad m => MonadZero m where
>     mzero :: m a
> class MonadZero m => MonadPlus m where
>     mplus :: m a -> m a -> m a
> class MonadZero m => MonadOr m where
>     morelse :: m a -> m a -> m a
>
> <http://haskell.org/haskellwiki/MonadPlus_reform_proposal>
>
> --
> Ashley Yakeley, Seattle WA
> WWED? http://www.cs.utexas.edu/users/EWD/
>
> _______________________________________________
> Haskell-prime mailing list
> [email protected]
> http://haskell.org/mailman/listinfo/haskell-prime
>
_______________________________________________
Haskell-prime mailing list
[email protected]
http://haskell.org/mailman/listinfo/haskell-prime

Reply via email to