On Mon, Feb 20, 2006 at 05:29:16PM -0500, ajb@spamcop.net wrote:
The problem with MonadPlus is that you don't actually need the Plus functionality. It is usually considered good design to only require what you need, and Monad already has "fail".
There has been some discussion on haskell-prime about resurrecting the MonadZero class, for monads with mzero but not mappend. This would be the closest fit, but then, you might want to consider that some people would appreciate having the string diagnostic.
I think the problem is that 'mzero' exists, the correct solution seems to be to get rid of the 'mzero' method of MonadPlus. Since haskell is lazy, all Monads have at least the zero of _|_ which can be overriden by 'fail' with a more suitable one. MonadPlus should be about extending monads with an additive operator, there is no need for another concept of zero and it seems to me that is the real issue. mzero can simply be defined as 'fail "mzero"'. John -- John Meacham - ⑆repetae.net⑆john⑈