[Haskell-cafe] Re: What are the MonadPlus laws?

Jules Bean jules at jellybean.co.uk
Wed Jan 26 05:56:40 EST 2005


On 26 Jan 2005, at 05:57, David Menendez wrote:
> Philip Wadler listed those as the laws he "would usually insist on" in 
> a
> 1997 message[1].
>
>     [1] <http://www.dcs.gla.ac.uk/mail-www/haskell/msg00057.html>
>
> He also mentions two other possible, but problematic, laws:
>
>     m >>= \x -> mzero           == mzero
>     m >>= \x -> k x `mplus` h x == m >>= k `mplus` m >>= h
>
> The first doesn't hold when m is bottom. The second doesn't hold for
> lists.
>

Well I think the issue with bottom is not too upsetting.

The second holds 'up to reordering of the elements', I think?. If you 
consider lists as representing non-deterministic or multiple-valued 
computation, then it is quite natural to feel comfortable ignoring the 
ordering. (In effect, using lists as a model for multi-sets, which form 
a commutative monad?)

But it certainly looks like the IO instance for MonadPlus is badly 
broken.

Are there any interesting programming uses of MonadPlus apart from 
'calculations returning multiple values'.. i.e. 
lists/sets/multisets/maybe?

Jules



More information about the Haskell-Cafe mailing list