Bas van Dijk wrote: > The following obviously doesn't work: > > import Control.Monad.Error > > inv :: MonadError e m => m a -> m () > inv m = (m >> fail "") `catchError` \_ -> (return ()) What about this? inv :: MonadError e m => m a -> m () inv m = join $ (m >> return mzero) `catchError` \_ -> return (return ()) Tillmann