Hi all, A why question: Why: Control.Monad.Error Prelude> runErrorT (fail "msg") :: IO (Either String Int) Left "msg" but Control.Monad.Error Prelude> (fail "msg") :: (Either String Int) *** Exception: msg ? -- Gracjan