Safe Haskell  Safe 

Language  Haskell98 
Hybrid error/writer monad class that allows both accumulating outputs and aborting computation with a final output.
The expected use case is for computations with a notion of fatal vs. nonfatal errors.
 class Monad m => MonadChronicle c m  m > c where
 newtype ChronicleT c m a = ChronicleT {
 runChronicleT :: m (These c a)
 runChronicle :: Chronicle c a > These c a
Documentation
class Monad m => MonadChronicle c m  m > c where Source
disclose :: Default a => c > m a Source
is an action that records the output disclose
cc
and returns a
value.Default
This is a convenience function for reporting nonfatal 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.
is an action that ends with a final record confess
cc
.
Equivalent to throwError
for the Error
monad.
memento :: m a > m (Either c a) Source
is an action that executes the action 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
nonfatal errors (which are accumulated) vs. fatal errors (which are caught
without accumulating).
absolve :: a > m a > m a Source
is an action that executes the action absolve
x mm
and discards any
record it had. The default value x
will be used if m
ended via
confess
.
is an action that executes the action 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 nonfatal errors into fatal ones.
retcon :: (c > c) > m a > m a Source
is an action that executes the action retcon
f mm
and applies the
function f
to its output, leaving the return value unchanged.
chronicle :: These c a > m a Source
lifts a plain 'These c a' value into a chronicle
mMonadChronicle
instance.
MonadChronicle c m => MonadChronicle c (MaybeT m) Source  
MonadChronicle c m => MonadChronicle c (IdentityT m) Source  
Monoid c => MonadChronicle c (These c) Source  
(Monoid w, MonadChronicle c m) => MonadChronicle c (WriterT w m) Source  
(Monoid w, MonadChronicle c m) => MonadChronicle c (WriterT w m) Source  
MonadChronicle c m => MonadChronicle c (StateT s m) Source  
MonadChronicle c m => MonadChronicle c (StateT s m) Source  
MonadChronicle c m => MonadChronicle c (ReaderT r m) Source  
MonadChronicle c m => MonadChronicle c (ExceptT e m) Source  
(Error e, MonadChronicle c m) => MonadChronicle c (ErrorT e m) Source  
(Monoid c, Monad m) => MonadChronicle c (ChronicleT c m) Source  
(Monoid w, MonadChronicle c m) => MonadChronicle c (RWST r w s m) Source  
(Monoid w, MonadChronicle c m) => MonadChronicle c (RWST r w s m) 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 mappend
.
ChronicleT  

(Monoid c, MonadRWS r w s m) => MonadRWS r w s (ChronicleT c m) Source  
(Monoid c, MonadError e m) => MonadError e (ChronicleT c m) Source  
(Monoid c, MonadReader r m) => MonadReader r (ChronicleT c m) Source  
(Monoid c, MonadState s m) => MonadState s (ChronicleT c m) Source  
(Monoid c, MonadWriter w m) => MonadWriter w (ChronicleT c m) Source  
(Monoid c, Monad m) => MonadChronicle c (ChronicleT c m) Source  
Monoid c => MonadTrans (ChronicleT c) Source  
(Monoid c, Monad m) => Monad (ChronicleT c m) Source  
Functor m => Functor (ChronicleT c m) Source  
(Monoid c, MonadFix m) => MonadFix (ChronicleT c m) Source  
(Monoid c, Applicative m) => Applicative (ChronicleT c m) Source  
(Monoid c, Applicative m, Monad m) => Alternative (ChronicleT c m) Source  
(Monoid c, Monad m) => MonadPlus (ChronicleT c m) Source  
(Monoid c, MonadIO m) => MonadIO (ChronicleT c m) Source  
(Monoid c, Apply m) => Apply (ChronicleT c m) Source  
(Monoid c, Apply m, Monad m) => Bind (ChronicleT c m) Source 
runChronicle :: Chronicle c a > These c a Source