Andrew asked,

> ...so it's a kind of choice operator? Run all actions until you get to one
> that succeeds and return the result from that?

The eternal bit of trickiness for Haskell is that type classes group
often together things that people don't immediately see as similar -
monads probably being the best example. So it's probably best not to
immediately try to find an all-encompassing summary of MonadPlus like
"a kind of choice operator" but instead concentrate on the definition.
The key thing is the line

> mplus :: m a -> m a -> m a

You can combine two m a's together with a binary operation to get
another m a. Absolutely any binary operation (with an identity) that
fits the rather lax laws that come with MonadPlus will do. Depending
on context mplus might mean "either/or", or "and", or "this first, or
else that" or something entirely different that nobody here has
anticipated yet. For each monad m, just try to think about how you
might combine a pair of m a's and what might serve as an identity.
--
Dan
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to