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