OK, I think we have enough agreement to decide:
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
(I'm still a bit nervous about capturing 'fail' but
there seems to be fairly strong support for doing so.)
class Monad m => MonadPlus m where
mzero :: m a
mplus :: m a -> m a -> m a
IO.fail becomes IO.ioError
Simon
- Re: 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
