exceptiot-0.0.1.0: ExceptT, but uses IO instead of Either
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Monad.Except.IO

Synopsis

Documentation

newtype ExceptIOT e m a Source #

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.

Since: 0.1.0.0

Constructors

ExceptIOT 

Fields

Instances

Instances details
(MonadUnliftIO m, Exception e) => MonadError e (ExceptIOT e m) Source #

Since: 0.1.0.0

Instance details

Defined in Control.Monad.Except.IO

Methods

throwError :: e -> ExceptIOT e m a #

catchError :: ExceptIOT e m a -> (e -> ExceptIOT e m a) -> ExceptIOT e m a #

MonadReader r m => MonadReader r (ExceptIOT e m) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

ask :: ExceptIOT e m r #

local :: (r -> r) -> ExceptIOT e m a -> ExceptIOT e m a #

reader :: (r -> a) -> ExceptIOT e m a #

MonadState s m => MonadState s (ExceptIOT e m) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

get :: ExceptIOT e m s #

put :: s -> ExceptIOT e m () #

state :: (s -> (a, s)) -> ExceptIOT e m a #

MonadWriter w m => MonadWriter w (ExceptIOT e m) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

writer :: (a, w) -> ExceptIOT e m a #

tell :: w -> ExceptIOT e m () #

listen :: ExceptIOT e m a -> ExceptIOT e m (a, w) #

pass :: ExceptIOT e m (a, w -> w) -> ExceptIOT e m a #

MonadFail m => MonadFail (ExceptIOT e m) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

fail :: String -> ExceptIOT e m a #

MonadFix m => MonadFix (ExceptIOT e m) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

mfix :: (a -> ExceptIOT e m a) -> ExceptIOT e m a #

MonadIO m => MonadIO (ExceptIOT e m) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

liftIO :: IO a -> ExceptIOT e m a #

Alternative m => Alternative (ExceptIOT e m) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

empty :: ExceptIOT e m a #

(<|>) :: ExceptIOT e m a -> ExceptIOT e m a -> ExceptIOT e m a #

some :: ExceptIOT e m a -> ExceptIOT e m [a] #

many :: ExceptIOT e m a -> ExceptIOT e m [a] #

Applicative m => Applicative (ExceptIOT e m) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

pure :: a -> ExceptIOT e m a #

(<*>) :: ExceptIOT e m (a -> b) -> ExceptIOT e m a -> ExceptIOT e m b #

liftA2 :: (a -> b -> c) -> ExceptIOT e m a -> ExceptIOT e m b -> ExceptIOT e m c #

(*>) :: ExceptIOT e m a -> ExceptIOT e m b -> ExceptIOT e m b #

(<*) :: ExceptIOT e m a -> ExceptIOT e m b -> ExceptIOT e m a #

Functor m => Functor (ExceptIOT e m) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

fmap :: (a -> b) -> ExceptIOT e m a -> ExceptIOT e m b #

(<$) :: a -> ExceptIOT e m b -> ExceptIOT e m a #

Monad m => Monad (ExceptIOT e m) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

(>>=) :: ExceptIOT e m a -> (a -> ExceptIOT e m b) -> ExceptIOT e m b #

(>>) :: ExceptIOT e m a -> ExceptIOT e m b -> ExceptIOT e m b #

return :: a -> ExceptIOT e m a #

MonadPlus m => MonadPlus (ExceptIOT e m) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

mzero :: ExceptIOT e m a #

mplus :: ExceptIOT e m a -> ExceptIOT e m a -> ExceptIOT e m a #

MonadCatch m => MonadCatch (ExceptIOT e m) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

catch :: Exception e0 => ExceptIOT e m a -> (e0 -> ExceptIOT e m a) -> ExceptIOT e m a #

MonadMask m => MonadMask (ExceptIOT e m) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

mask :: ((forall a. ExceptIOT e m a -> ExceptIOT e m a) -> ExceptIOT e m b) -> ExceptIOT e m b #

uninterruptibleMask :: ((forall a. ExceptIOT e m a -> ExceptIOT e m a) -> ExceptIOT e m b) -> ExceptIOT e m b #

generalBracket :: ExceptIOT e m a -> (a -> ExitCase b -> ExceptIOT e m c) -> (a -> ExceptIOT e m b) -> ExceptIOT e m (b, c) #

MonadThrow m => MonadThrow (ExceptIOT e m) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

throwM :: Exception e0 => e0 -> ExceptIOT e m a #

MonadUnliftIO m => MonadUnliftIO (ExceptIOT e m) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

withRunInIO :: ((forall a. ExceptIOT e m a -> IO a) -> IO b) -> ExceptIOT e m b #

Monoid (m a) => Monoid (ExceptIOT e m a) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

mempty :: ExceptIOT e m a #

mappend :: ExceptIOT e m a -> ExceptIOT e m a -> ExceptIOT e m a #

mconcat :: [ExceptIOT e m a] -> ExceptIOT e m a #

Semigroup (m a) => Semigroup (ExceptIOT e m a) Source # 
Instance details

Defined in Control.Monad.Except.IO

Methods

(<>) :: ExceptIOT e m a -> ExceptIOT e m a -> ExceptIOT e m a #

sconcat :: NonEmpty (ExceptIOT e m a) -> ExceptIOT e m a #

stimes :: Integral b => b -> ExceptIOT e m a -> ExceptIOT e m a #

runExceptIOT :: (Exception e, MonadUnliftIO m) => ExceptIOT e m a -> m (Either e a) Source #

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.

Since: 0.1.0.0

modifyError :: (Exception e, MonadUnliftIO m, MonadError e' m) => (e -> e') -> ExceptIOT e m a -> m a Source #

Like modifyError, but it selects the ExceptIOT instance for IO exceptions instead of the ExceptT instance with an Either error.

Since: 0.1.0.0