[Haskell-cafe] type checking that I can't figure out ....

wren ng thornton wren at freegeek.org
Thu Jun 4 03:52:12 EDT 2009

Daniel Peebles wrote:
> Yeah, in a way similar to ArrowPlus/ArrowZero. Then again, I'm not
> sure whether it would be meaningful to split up MonadPlus like that.

Well, we could always have: class MonadZero m => MonadPlus m

The suggestion is just to broaden the scope of mzero so that you can 
have it without requiring mplus as well (since mplus is much more 
specific than mzero).

If we have a MonadZero, then the call to fail when pattern binds fail 
could be replaced with calls to mzero (or at the very least, fail can be 
moved to MonadZero as well to clean up Monad). Then Monad is clean and 
accurate, and people just depend on MonadZero if they choose to do 
pattern binds rather than catching all patterns with a case expression.

Live well,

More information about the Haskell-Cafe mailing list