class Monad m where
return :: m a
(>>=) :: m a -> (a -> m b) -> m b
(>>) :: m a -> m b -> m b
fail :: String -> m a
fail s = error s
IO.fail becomes IO.ioError
Looks good.
class Monad m => MonadPlus m where
mzero :: m a
mplus :: m a -> m a -> m a
Why is this here? It doesn't need to be in the prelude. Just
leave it for the user to define (and then the user may pick
better names, like Ringad, zero, and <+>). -- P
- MonadZero (concluded) Simon Peyton-Jones
- Re: MonadZero (concluded) Philip Wadler
- Re: MonadZero (concluded) Olaf Chitil
- Re: MonadZero (concluded) Ralf Hinze
- RE: MonadZero (concluded) Simon Peyton-Jones
- RE: MonadZero (concluded) S. Alexander Jacobson
- Re: MonadZero (concluded) Meurig Sage
- RE: MonadZero (concluded) Ralf Hinze
- Re: MonadZero (concluded) Lennart Augustsson
- RE: MonadZero (concluded) S. Alexander Jacobson
- RE: MonadZero (concluded) Christian Sievers
- Re: MonadZero (concluded) Erik Meijer
