Control.Monad.Attempt
Description
Provide a monad transformer for the attempt monad, which allows the reporting of errors using extensible exceptions.
- newtype AttemptT m v = AttemptT {
- runAttemptT :: m (Attempt v)
- evalAttemptT :: (Monad m, FromAttempt m) => AttemptT m v -> m v
- attemptT :: Monad m => (forall e. Exception e => e -> b) -> (a -> b) -> AttemptT m a -> m b
- attemptTIO :: (Exception eIn, Exception eOut) => (eIn -> eOut) -> IO v -> AttemptT IO v
- module Data.Attempt
Documentation
Constructors
| AttemptT | |
Fields
| |
evalAttemptT :: (Monad m, FromAttempt m) => AttemptT m v -> m vSource
Instances of FromAttempt specify a manner for embedding Attempt
failures directly into the target data type. For example, the IO instance
simply throws a runtime error. This is a convenience wrapper when you simply
want to use that default action.
So given a type AttemptT IO Int, this function will convert it to IO
Int, throwing any exceptions in the original value.
attemptTIO :: (Exception eIn, Exception eOut) => (eIn -> eOut) -> IO v -> AttemptT IO vSource
Catches runtime (ie, IO) exceptions and represents them in an AttemptT
transformer.
Like handle, the first argument to this function must explicitly state the
type of its input.
module Data.Attempt