| Safe Haskell | Trustworthy | 
|---|---|
| Language | Haskell2010 | 
Control.Monad.Chronicle
Description
The ChronicleT monad, a hybrid error/writer monad that allows
 both accumulating outputs and aborting computation with a final
 output.
Synopsis
- class Monad m => MonadChronicle c m | m -> c where
- type Chronicle c = ChronicleT c Identity
- runChronicle :: Chronicle c a -> These c a
- newtype ChronicleT c m a = ChronicleT {- runChronicleT :: m (These c a)
 
Type class for Chronicle-style monads
class Monad m => MonadChronicle c m | m -> c where Source #
Methods
disclose :: Default a => c -> m a Source #
disclose cc and returns a
   Default
This is a convenience function for reporting non-fatal errors in one
   branch a case, or similar scenarios when there is no meaningful
   result but a placeholder of sorts is needed in order to continue.
confess cc.
Equivalent to throwError for the Error monad.
memento :: m a -> m (Either c a) Source #
memento mm, returning either
   its record if it ended with confess, or its final value otherwise, with
   any record added to the current record.
Similar to catchError in the Error monad, but with a notion of
   non-fatal errors (which are accumulated) vs. fatal errors (which are caught
   without accumulating).
absolve :: a -> m a -> m a Source #
absolve x mm and discards any
   record it had. The default value x will be used if m ended via
   confess.
condemn :: m a -> m a Source #
condemn mm and keeps its value
   only if it had no record. Otherwise, the value (if any) will be discarded
   and only the record kept.
This can be seen as converting non-fatal errors into fatal ones.
retcon :: (c -> c) -> m a -> m a Source #
retcon f mm and applies the
   function f to its output, leaving the return value unchanged.
chronicle :: These c a -> m a Source #
chronicle mThese c aMonadChronicle instance.
Instances
The ChronicleT monad transformer
type Chronicle c = ChronicleT c Identity Source #
runChronicle :: Chronicle c a -> These c a Source #
newtype ChronicleT c m a Source #
The ChronicleT monad transformer.
The return function produces a computation with no output, and >>=
   combines multiple outputs with <>.
Constructors
| ChronicleT | |
| Fields 
 | |