The following is independent of whether MonadPlus is moved to the library or not. Therefore I dare to raise a new issue that is related to monads ... As I understand it, class Monad now contains fail and the IO monad is no longer a subclass of Monad. Wouldn't it be nice, then, to add a predicate isZero :: m a -> Bool (or similar) to MonadPlus, whose purpose is to distinguish the value of mzero? All datatypes which are instances of MonadPlus already have such a predicate, or at least it could be implemented easily. To my knowledge, the IO monad was the only example that did not allow such a predicate. Since this obstacle is gone, datatype interfaces could be unified a bit more. Klaus -- Klaus Barthelmann, Johannes Gutenberg-Universitat, Institut fur Informatik, D-55099 Mainz, Germany [EMAIL PROTECTED]