instance MonadReader r m => MonadReader r (ExceptT e m)
authorEdward Kmett <ekmett@gmail.com>
Mon, 5 May 2014 13:15:43 +0000 (23:15 +1000)
committerEdward Kmett <ekmett@gmail.com>
Mon, 5 May 2014 13:15:43 +0000 (23:15 +1000)
Control/Monad/Reader/Class.hs

index ca7c041..97104b5 100644 (file)
@@ -43,6 +43,7 @@ module Control.Monad.Reader.Class (
     ) where
 
 import Control.Monad.Trans.Cont as Cont
+import Control.Monad.Trans.Except
 import Control.Monad.Trans.Error
 import Control.Monad.Trans.Identity
 import Control.Monad.Trans.List
@@ -128,6 +129,11 @@ instance (Error e, MonadReader r m) => MonadReader r (ErrorT e m) where
     local = mapErrorT . local
     reader = lift . reader
 
+instance MonadReader r m => MonadReader r (ExceptT e m) where
+    ask   = lift ask
+    local = mapExceptT . local
+    reader = lift . reader
+
 instance MonadReader r m => MonadReader r (IdentityT m) where
     ask   = lift ask
     local = mapIdentityT . local