MonadError for ExceptT
authorEdward Kmett <ekmett@gmail.com>
Mon, 5 May 2014 13:05:44 +0000 (23:05 +1000)
committerEdward Kmett <ekmett@gmail.com>
Mon, 5 May 2014 13:05:44 +0000 (23:05 +1000)
Control/Monad/Error/Class.hs

index ae9a8b0..4f7cb6f 100644 (file)
@@ -40,7 +40,9 @@ module Control.Monad.Error.Class (
     MonadError(..),
   ) where
 
+import Control.Monad.Trans.Except (Except(..), ExceptT)
 import Control.Monad.Trans.Error (Error(..), ErrorT)
+import qualified Control.Monad.Trans.Except as ExceptT (throwE, catchE)
 import qualified Control.Monad.Trans.Error as ErrorT (throwError, catchError)
 import Control.Monad.Trans.Identity as Identity
 import Control.Monad.Trans.List as List
@@ -111,6 +113,10 @@ instance (Monad m, Error e) => MonadError e (ErrorT e m) where
     throwError = ErrorT.throwError
     catchError = ErrorT.catchError
 
+instance Monad m => MonadError e (ExceptT e m) where
+    throwError = ExceptT.throwE
+    catchError = ExceptT.catchE
+
 -- ---------------------------------------------------------------------------
 -- Instances for other mtl transformers
 --