In the All About Monads Haskell Wiki page, there is these definitions for the Maybe monad:
data Maybe a = Nothing | Just a
instance Monad Maybe where
return = Just
fail = Nothing
Nothing >>= f = Nothing
(Just x) >>= f = f x
instance MonadPlus Maybe where
mzero = Nothing
Nothing `mplus` x = x
x `mplus` _= x
Which is the preferred, Maybe as an instance of a simple Monad, or as a MonadPlus?