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
AttemptT | |
|
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