[Haskell-cafe] monadplus as monoid, safe?

Nicolas Frisby nicolas.frisby at gmail.com
Wed Aug 30 15:56:29 EDT 2006

I'm using the following code in some of my projects:

> newtype MonadPlusAsMonoid a = MPM { unMPM :: a }
> instance MonadPlus m => Monoid (MonadPlusAsMonoid (m a)) where
>     mempty = MPM mzero
>     MPM l `mappend` MPM r = MPM (l `mplus` r)

Is there some sort of pitfall I'm not considering?

It seems fine to me, but I ask because I couldn't find this instance
in the darcs repo for the next base library package. I expected to
find it there because it has similar instances for numbers as monoids
(e.g. Sum and Product from Data.Monoid).


More information about the Haskell-Cafe mailing list