Class.hs 424 B

1234567891011121314
  1. {-# LANGUAGE TypeFamilies #-}
  2. module Control.Monad.Trans.Interruptible.Class where
  3. import Control.Monad.Trans.Class
  4. import Control.Monad.Trans.Either
  5. class MonadTrans m => InterruptibleMonadTrans m where
  6. type RDt m :: * -> *
  7. runT :: Monad n => RDt m a -> (a -> m n b) -> n (RDt m b)
  8. instance InterruptibleMonadTrans (EitherT e) where
  9. type RDt (EitherT e) = Either e
  10. runT st f = runEitherT (hoistEither st >>= f)