-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | ExceptT, but uses IO instead of Either -- -- Please see the README on Github at -- https://github.com/parsonsmatt/exceptiot#readme @package exceptiot @version 0.0.1.0 module Control.Monad.Except.Catch -- | This type is useful for translating a MonadError constraint -- into MonadCatch. This type does not have an Either -- return, which means we can provide a MonadUnliftIO instance. newtype ExceptCatchT e m a ExceptCatchT :: m a -> ExceptCatchT e m a [unsafeRunExceptCatchT] :: ExceptCatchT e m a -> m a -- | Run an ExceptCatchT action. This will catch any thrown -- e exceptions, regardless of whether you used throwM or -- throwError. -- -- Any exception that is not mentioned in e will be thrown - -- this does not catch all exceptions! runExceptCatchT :: (Exception e, MonadCatch m) => ExceptCatchT e m a -> m (Either e a) -- | Like modifyError, but it selects the ExceptCatchT -- instance for IO exceptions instead of the ExceptT -- instance with an Either error. modifyError :: (Exception e, MonadCatch m, MonadError e' m) => (e -> e') -> ExceptCatchT e m a -> m a instance Control.Monad.Catch.MonadMask m => Control.Monad.Catch.MonadMask (Control.Monad.Except.Catch.ExceptCatchT e m) instance Control.Monad.Catch.MonadCatch m => Control.Monad.Catch.MonadCatch (Control.Monad.Except.Catch.ExceptCatchT e m) instance Control.Monad.Catch.MonadThrow m => Control.Monad.Catch.MonadThrow (Control.Monad.Except.Catch.ExceptCatchT e m) instance Control.Monad.Fail.MonadFail m => Control.Monad.Fail.MonadFail (Control.Monad.Except.Catch.ExceptCatchT e m) instance Control.Monad.Fix.MonadFix m => Control.Monad.Fix.MonadFix (Control.Monad.Except.Catch.ExceptCatchT e m) instance Control.Monad.Writer.Class.MonadWriter w m => Control.Monad.Writer.Class.MonadWriter w (Control.Monad.Except.Catch.ExceptCatchT e m) instance Control.Monad.State.Class.MonadState s m => Control.Monad.State.Class.MonadState s (Control.Monad.Except.Catch.ExceptCatchT e m) instance Control.Monad.Reader.Class.MonadReader r m => Control.Monad.Reader.Class.MonadReader r (Control.Monad.Except.Catch.ExceptCatchT e m) instance Control.Monad.IO.Unlift.MonadUnliftIO m => Control.Monad.IO.Unlift.MonadUnliftIO (Control.Monad.Except.Catch.ExceptCatchT e m) instance GHC.Base.Monoid (m a) => GHC.Base.Monoid (Control.Monad.Except.Catch.ExceptCatchT e m a) instance GHC.Base.Semigroup (m a) => GHC.Base.Semigroup (Control.Monad.Except.Catch.ExceptCatchT e m a) instance GHC.Base.Alternative m => GHC.Base.Alternative (Control.Monad.Except.Catch.ExceptCatchT e m) instance GHC.Base.MonadPlus m => GHC.Base.MonadPlus (Control.Monad.Except.Catch.ExceptCatchT e m) instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Control.Monad.Except.Catch.ExceptCatchT e m) instance GHC.Base.Monad m => GHC.Base.Monad (Control.Monad.Except.Catch.ExceptCatchT e m) instance GHC.Base.Applicative m => GHC.Base.Applicative (Control.Monad.Except.Catch.ExceptCatchT e m) instance GHC.Base.Functor m => GHC.Base.Functor (Control.Monad.Except.Catch.ExceptCatchT e m) instance (Control.Monad.Catch.MonadCatch m, GHC.Exception.Type.Exception e) => Control.Monad.Error.Class.MonadError e (Control.Monad.Except.Catch.ExceptCatchT e m) module Control.Monad.Except.IO -- | This type is useful for providing a MonadError constraint to an -- IO action for a given type. It can replace ExceptT. -- -- Note that catchError will use the behavior from UnliftIO -- - so catch won't catch an asynchronous exception. newtype ExceptIOT e m a ExceptIOT :: m a -> ExceptIOT e m a [unsafeRunExceptIOT] :: ExceptIOT e m a -> m a -- | Run an ExceptIOT action. This catches the thrown exception, but -- only if it is the e that the type mentions. All other -- exceptions will remain uncaught. runExceptIOT :: (Exception e, MonadUnliftIO m) => ExceptIOT e m a -> m (Either e a) -- | Like modifyError, but it selects the ExceptIOT instance -- for IO exceptions instead of the ExceptT instance with -- an Either error. modifyError :: (Exception e, MonadUnliftIO m, MonadError e' m) => (e -> e') -> ExceptIOT e m a -> m a instance Control.Monad.Catch.MonadMask m => Control.Monad.Catch.MonadMask (Control.Monad.Except.IO.ExceptIOT e m) instance Control.Monad.Catch.MonadCatch m => Control.Monad.Catch.MonadCatch (Control.Monad.Except.IO.ExceptIOT e m) instance Control.Monad.Catch.MonadThrow m => Control.Monad.Catch.MonadThrow (Control.Monad.Except.IO.ExceptIOT e m) instance Control.Monad.Fail.MonadFail m => Control.Monad.Fail.MonadFail (Control.Monad.Except.IO.ExceptIOT e m) instance Control.Monad.Fix.MonadFix m => Control.Monad.Fix.MonadFix (Control.Monad.Except.IO.ExceptIOT e m) instance Control.Monad.Writer.Class.MonadWriter w m => Control.Monad.Writer.Class.MonadWriter w (Control.Monad.Except.IO.ExceptIOT e m) instance Control.Monad.State.Class.MonadState s m => Control.Monad.State.Class.MonadState s (Control.Monad.Except.IO.ExceptIOT e m) instance Control.Monad.Reader.Class.MonadReader r m => Control.Monad.Reader.Class.MonadReader r (Control.Monad.Except.IO.ExceptIOT e m) instance Control.Monad.IO.Unlift.MonadUnliftIO m => Control.Monad.IO.Unlift.MonadUnliftIO (Control.Monad.Except.IO.ExceptIOT e m) instance GHC.Base.Monoid (m a) => GHC.Base.Monoid (Control.Monad.Except.IO.ExceptIOT e m a) instance GHC.Base.Semigroup (m a) => GHC.Base.Semigroup (Control.Monad.Except.IO.ExceptIOT e m a) instance GHC.Base.Alternative m => GHC.Base.Alternative (Control.Monad.Except.IO.ExceptIOT e m) instance GHC.Base.MonadPlus m => GHC.Base.MonadPlus (Control.Monad.Except.IO.ExceptIOT e m) instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Control.Monad.Except.IO.ExceptIOT e m) instance GHC.Base.Monad m => GHC.Base.Monad (Control.Monad.Except.IO.ExceptIOT e m) instance GHC.Base.Applicative m => GHC.Base.Applicative (Control.Monad.Except.IO.ExceptIOT e m) instance GHC.Base.Functor m => GHC.Base.Functor (Control.Monad.Except.IO.ExceptIOT e m) instance (Control.Monad.IO.Unlift.MonadUnliftIO m, GHC.Exception.Type.Exception e) => Control.Monad.Error.Class.MonadError e (Control.Monad.Except.IO.ExceptIOT e m)