Following many protests, the right thing to do seems
to be to move MonadPlus to the Monad library.  Specifically:

        class Monad m => MonadPlus m where
          mzero :: m a
          mplus :: m a -> m a -> m a

        filterM :: MonadZero m => (a -> m Bool) -> [a] -> m [a]
        guard   :: MonadZero m => Bool -> m ()
        mfilter :: MonadZero m => (a -> Bool) -> m a -> m a
        concatM :: MonadPlus m => [m a] -> m a


Alex, you'll have to use `mplus` instead of (++); or you 
can define a new operator (+++) to mean `mplus`; or you can
hide the list (++) and redefine it to be `mplus`.

I guess that 95% of the mailing list is tired of MonadZero.
If anyone has further thoughts, pls send them to me only
(and, of course, any other individuals you like).

Simon


Reply via email to