It sounds like the semantics of the MonadPlus methods are
under-specified. I recall once writing a newtype wrapper to treat the
same non-determinism monad with different mplus semantics, akin to cut
versus backtracking.
I think of MonadPlus as a less expressive version of msplit, from
Backtracking, Interleaving, and Terminating Monad Transformers
The Functional Pearl paper by Oleg Kiselyov, Chung-chieh Shan,
Daniel P. Friedman and Amr Sabry. ICFP 2005.
Is that an over-simplification?
On Fri, May 9, 2008 at 3:12 PM, Bryan O'Sullivan <
bos@...> wrote:
> Andrew Coppin wrote:
>
>> ...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 the context of Parsec, yes. In the grander scheme of things, the
> behaviour depends on whatever is appropriate for the particular monad
> you're working in.
>
> So, for example, mplus for lists is (++) and mzero is [], which is quite
> a different set of behaviours from the Parsec case. Usually, you can
> rely on MonadPlus behaving like a monoid. There are occasional
> exceptions, which is a mite upsetting.
>
>
http://www.haskell.org/haskellwiki/MonadPlus>
> <b
> _______________________________________________
> Haskell-Cafe mailing list
>
Haskell-Cafe@...
>
http://www.haskell.org/mailman/listinfo/haskell-cafe>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@...
http://www.haskell.org/mailman/listinfo/haskell-cafe