Safe Haskell | Safe |
---|---|
Language | Haskell98 |
Wrapper for Control.Monad.Except from the mtl package
- class Error a where
- data ExceptT e m a :: * -> (* -> *) -> * -> *
- mkExceptT :: m (Either e a) -> ExceptT e m a
- class Monad m => MonadError e m | m -> e where
- throwError :: e -> m a
- catchError :: m a -> (e -> m a) -> m a
- runExceptT :: ExceptT e m a -> m (Either e a)
- mapExceptT :: (m (Either e a) -> n (Either e' b)) -> ExceptT e m a -> ExceptT e' n b
Documentation
data ExceptT e m a :: * -> (* -> *) -> * -> * #
A monad transformer that adds exceptions to other monads.
ExceptT
constructs a monad parameterized over two things:
- e - The exception type.
- m - The inner monad.
The return
function yields a computation that produces the given
value, while >>=
sequences two subcomputations, exiting on the
first exception.
mkExceptT :: m (Either e a) -> ExceptT e m a Source #
We cannot define data constructors synonymous, so we define the
mkExceptT
function to be used instead of the data constructor
ExceptT
.
class Monad m => MonadError e m | m -> e where #
The strategy of combining computations that can throw exceptions by bypassing bound functions from the point an exception is thrown to the point that it is handled.
Is parameterized over the type of error information and
the monad type constructor.
It is common to use
as the monad type constructor
for an error monad in which error descriptions take the form of strings.
In that case and many other common cases the resulting monad is already defined
as an instance of the Either
StringMonadError
class.
You can also define your own error type and/or use a monad type constructor
other than
or Either
String
.
In these cases you will have to explicitly define instances of the Either
IOError
Error
and/or MonadError
classes.
MonadError IOException IO | |
MonadError ParseError Parser # | |
MonadError TCErr IM # | |
MonadError TCErr TerM # | |
MonadError e m => MonadError e (MaybeT m) | |
MonadError e m => MonadError e (ListT m) | |
MonadError e (Either e) | |
MonadError TCErr (TCMT IO) # | |
(Monoid w, MonadError e m) => MonadError e (WriterT w m) | |
(Monoid w, MonadError e m) => MonadError e (WriterT w m) | |
MonadError e m => MonadError e (StateT s m) | |
MonadError e m => MonadError e (StateT s m) | |
MonadError e m => MonadError e (IdentityT * m) | |
Monad m => MonadError e (ExceptT e m) | |
(Monad m, Error e) => MonadError e (ErrorT e m) | |
(Error err, MonadError err' m) => MonadError err' (ExceptionT err m) # | |
MonadError e m => MonadError e (ReaderT * r m) | |
(Monoid w, MonadError e m) => MonadError e (RWST r w s m) | |
(Monoid w, MonadError e m) => MonadError e (RWST r w s m) | |
MonadError e m => MonadError e (EquivT s c v m) | |
runExceptT :: ExceptT e m a -> m (Either e a) #
The inverse of ExceptT
.
mapExceptT :: (m (Either e a) -> n (Either e' b)) -> ExceptT e m a -> ExceptT e' n b #
Map the unwrapped computation using the given function.
runExceptT
(mapExceptT
f m) = f (runExceptT
m)