@@ -34,6 +34,7 @@ import Control.Monad.Fix (MonadFix)
34import Control.Monad.Trans.Class (MonadTrans, lift)
34import Control.Monad.Trans.Class (MonadTrans, lift)
35import Control.Monad.IO.Class (MonadIO)
35import Control.Monad.IO.Class (MonadIO)
36import Control.Monad.Morph (MFunctor, MMonad)
36import Control.Monad.Morph (MFunctor, MMonad)
37+import Control.Monad.Catch (MonadThrow, MonadCatch, MonadMask)
37import GHC.Generics (Generic)
38import GHC.Generics (Generic)
38import Data.Coerce (coerce)
39import Data.Coerce (coerce)
@@ -70,7 +71,8 @@ type Reader tag r = ReaderT tag r Identity
70newtype ReaderT tag r m a = ReaderT (Trans.ReaderT r m a)
71newtype ReaderT tag r m a = ReaderT (Trans.ReaderT r m a)
71 deriving ( Generic
72 deriving ( Generic
72 , Functor, Applicative, Alternative, Monad, MonadPlus
73 , Functor, Applicative, Alternative, Monad, MonadPlus
73− , MonadFix, MonadTrans, MonadIO, MFunctor, MMonad )
74+ , MonadFix, MonadTrans, MonadIO, MFunctor, MMonad
75+ , MonadThrow, MonadCatch, MonadMask )
75-- | Type-restricted `coerce`.
77-- | Type-restricted `coerce`.
76pack :: Trans.ReaderT r m a -> ReaderT tag r m a
78pack :: Trans.ReaderT r m a -> ReaderT tag r m a