Sure: newtype IOMayfail a = IOMayfail {runIOMayfail :: MaybeT IO a} instance Monad IOMayfail where return = IOMayfail . return IOMayfail m >>= f = IOMayfail $ m >>= runIOMayfail . f fail = whatever you like Matthias Görgens wrote on 25.06.2009 17:28: > Thanks. Can I add something like fail?