On Fri, 12 Dec 2003 20:55:59 +0000 Graham Klyne <[EMAIL PROTECTED]> wrote:
> At 14:17 12/12/03 -0500, Derek Elkins wrote: > >This will also provide a migration path if you want a more featureful > >monad. (or_maybe is mplus, fail or mzero can be used for Nothing > >when you explicitly want to fail). > > Is this or_maybe (and friends) actually defined in any of the standard > libraries? (Google found only one hit, in an old IRC log.) Well, I was somewhat confusing in switching the order, but or_maybe is a specialization of mplus. mplus is the general standard function and or_maybe is David's specialized to Maybe version. http://www.haskell.org/onlinereport/monad.html The idea of the operations of the MonadPlus class is mzero typically stands for some kind of failure and mplus is a choice or a merging. A logic analogy is if a >> b >> c is do a and b and c then a `mplus` b `mplus` c is do a or b or c. mzero would be false and return x would be true. Examples of things that would be instances of MonadPlus are: lists as representing non-determinism where mzero is [] meaning no answers (failure) and mplus being non-deterministic choice represented as (++), parsers with mzero as the always failing parser and mplus as alternation (Parsec's <|>), concurrency with mzero as the process that immediately halts and mplus as par (run two processes in parallel). _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe