diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/SlackBuilder/Trans.hs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/SlackBuilder/Trans.hs b/lib/SlackBuilder/Trans.hs index d678a19..5147a9a 100644 --- a/lib/SlackBuilder/Trans.hs +++ b/lib/SlackBuilder/Trans.hs @@ -5,6 +5,7 @@ module SlackBuilder.Trans import Control.Monad.Trans.Reader (ReaderT(..)) import SlackBuilder.Config import Control.Monad.IO.Class (MonadIO(..)) +import Control.Monad.Catch (MonadCatch(..), MonadThrow(..)) newtype SlackBuilderT a = SlackBuilderT { runSlackBuilderT :: ReaderT Settings IO a @@ -27,3 +28,12 @@ instance Monad SlackBuilderT instance MonadIO SlackBuilderT where liftIO = SlackBuilderT . liftIO + +instance MonadThrow SlackBuilderT + where + throwM = SlackBuilderT . throwM + +instance MonadCatch SlackBuilderT + where + catch (SlackBuilderT action) handler = + SlackBuilderT $ catch action $ runSlackBuilderT . handler |
