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