
On May 9, 2008, at 15:56 , Andrew Coppin wrote:
Bryan O'Sullivan wrote:
Andrew Coppin wrote:
But here's a question: what is the purpose of the MonadPlus class?
It gives you a way of working with monads as monoids. Consider a Parsec example:
metasyntactic = text "foo" `mplus` text "bar" `mplus` text "baz"
You'll get back whichever one matched, in left-to-right-order, or mzero (a parse failure) if all of them fail.
...so it's a kind of choice operator? Run all actions until you get to one that succeeds and return the result from that?
In monadic guise that's how it's usually used, yes (since monoids like (+) are not generally all that useful as monads; (++) (list monad) and (.) (Monad ((-) r)) might be, though). -- brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery@kf8nh.com system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH