MonadPlus

class Monad m => MonadPlus m where
    mzero :: m a
    mplus :: m a -> m a -> m a
mzero >> f == mzero
m >> (\x -> mzero) == mzero
mzero `mplus` m == m
m `mplus` mzero == m