[Haskell-cafe] About mplus

Stefan O'Rear stefanor at cox.net
Tue Sep 4 23:42:43 EDT 2007


On Wed, Sep 05, 2007 at 03:35:03PM +1200, ok wrote:
> I've been thinking about making a data type an instance of MonadPlus.
> From the Haddock documentation at haskell.org, I see that any such
> instance should satisfy
>
> 	mzero `mplus` x = x
> 	x `mplus` mzero = x
> 	mzero >>= f     = mzero
> 	v >> mzero      = mzero
>
> but is that all there is to it?  Are there no other requirements for
> MonadPlus to make sense?
>
> I also wondered why, once MonadPlus was added to the language, the
> definition of ++ wasn't changed to
> 	(++) = MonadPlus
> (with the MonadPlus instance for [] defined directly).

It was.  They changed it back in Haskell 98, as part of a grand program
of dumbing down the langauge...  Cale Gibbard says {{{I get the impression
there were a lot of people on the Haskell 98 committee who really really
hated polymorphism.}}}.

Stefan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://www.haskell.org/pipermail/haskell-cafe/attachments/20070904/200cb4a8/attachment.bin


More information about the Haskell-Cafe mailing list