diff --git a/kan-extensions.cabal b/kan-extensions.cabal index a457d4f..3e52283 100644 --- a/kan-extensions.cabal +++ b/kan-extensions.cabal @@ -56,6 +56,7 @@ library containers >= 0.4 && < 0.9, contravariant >= 1 && < 2, distributive >= 0.2.2 && < 1, + exceptions >= 0.10 && < 0.11, invariant >= 0.1 && < 1, free >= 4 && < 6, mtl >= 2.2.1 && < 2.4, diff --git a/src/Control/Monad/Codensity.hs b/src/Control/Monad/Codensity.hs index b524e5f..93ec1b7 100644 --- a/src/Control/Monad/Codensity.hs +++ b/src/Control/Monad/Codensity.hs @@ -38,6 +38,7 @@ module Control.Monad.Codensity import Control.Applicative import Control.Monad (MonadPlus(..)) +import Control.Monad.Catch (MonadThrow(..)) import qualified Control.Monad.Fail as Fail import Control.Monad.Free import Control.Monad.IO.Class @@ -142,6 +143,9 @@ instance (v ~~ v', Alternative v') instance (v ~~ v', Alternative v') => MonadPlus (Codensity (v :: k -> TYPE rep)) +instance MonadThrow m => MonadThrow (Codensity m) where + throwM = lift . throwM + -- | -- This serves as the *left*-inverse (retraction) of 'lift'. --