Option 1: Monad( .., mfail, mzero ), MonadPlus( mplus ) Option 2: Monad( .., mfail), MonadPlus( mzero, mplus ) Option 3: Monad( .., mfail), MonadPlus( mplus ), MonadZero( mzero ) Following Erik's note, I suggest: Option 4: Monad( (>>=), return, mfail) The user can define MonadZero, MonadPlus, etc. as desired -- we don't need to specify this in the prelude. This also means we only need to come up with a better name for `mfail'. How about `reject'? Option 4': Monad( (>>=), return, reject) -- P
- Re: MonadZero (concluded?) Philip Wadler
- Re: MonadZero (concluded?) Erik Meijer
- RE: MonadZero (concluded?) Simon Peyton-Jones
- Re: MonadZero (concluded?) Lennart Augustsson
- RE: MonadZero (concluded?) Koen Claessen
- RE: MonadZero (concluded?) Jon . Fairbairn
- RE: MonadZero (concluded?) Philip Wadler
- RE: MonadZero (concluded?) Frank A. Christoph