Safe Haskell | Safe-Inferred |
---|
This monad transformer adds the ability to accumulate errors from several ErrorT computations and report them all at once.
- newtype ErrorAccumT e m a = ErrorAccumT {
- runErrorAccumT :: m ([e], a)
- accum :: (ErrorList e, Monad m) => ErrorT [e] m a -> a -> ErrorAccumT e m a
- report :: (ErrorList e, Monad m) => ErrorAccumT e m a -> ErrorT [e] m a
- mapAccum :: (ErrorList e, Monad m) => (a -> ErrorT [e] m b) -> b -> [a] -> ErrorT [e] m [b]
- mapAccumA_ :: (ErrorList e, Monad m) => (a -> ErrorT [e] m ()) -> [a] -> ErrorAccumT e m ()
- mapAccum_ :: (ErrorList e, Monad m) => (a -> ErrorT [e] m ()) -> [a] -> ErrorT [e] m ()
- zipWithAccum_ :: (ErrorList e, Monad m) => (a -> b -> ErrorT [e] m ()) -> [a] -> [b] -> ErrorT [e] m ()
Documentation
newtype ErrorAccumT e m a Source
Error accumulator: used in combination with ErrorT to store intermediate computation results, when errors should be accumulated rather than reported immediately
ErrorAccumT | |
|
ErrorList e => MonadTrans (ErrorAccumT e) | |
(ErrorList e, Monad m) => Monad (ErrorAccumT e m) |
accum :: (ErrorList e, Monad m) => ErrorT [e] m a -> a -> ErrorAccumT e m aSource
Transform an error computation and default value into an error accumlator
report :: (ErrorList e, Monad m) => ErrorAccumT e m a -> ErrorT [e] m aSource
Transform an error accumlator back into a regular error computation
mapAccum :: (ErrorList e, Monad m) => (a -> ErrorT [e] m b) -> b -> [a] -> ErrorT [e] m [b]Source
mapAccum
f def xs
:
Apply f
to all xs
, accumulating errors and reporting them at the end
mapAccumA_ :: (ErrorList e, Monad m) => (a -> ErrorT [e] m ()) -> [a] -> ErrorAccumT e m ()Source
mapAccumA_
f xs
:
Apply f
to all xs
throwing away the result, accumulating errors
mapAccum_ :: (ErrorList e, Monad m) => (a -> ErrorT [e] m ()) -> [a] -> ErrorT [e] m ()Source
Same as mapAccumA_
, but reporting errors at the end
zipWithAccum_ :: (ErrorList e, Monad m) => (a -> b -> ErrorT [e] m ()) -> [a] -> [b] -> ErrorT [e] m ()Source
zipWithAccum_
f xs ys
:
Apply type checking f
to all xs
and ys
throwing away the result,
accumulating errors and reporting them at the end