| Safe Haskell | None |
|---|---|
| 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)
- class Semigroup a => Monoid a where
Type class for Chronicle-style monads
class Monad m => MonadChronicle c m | m -> c where Source #
Methods
is an action that records the output dictate cc.
Equivalent to tell for the Writer monad.
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 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.
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
non-fatal 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.
condemn :: m a -> m a Source #
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 non-fatal 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.
Equivalent to censor for the Writer monad.
chronicle :: These c a -> m a Source #
lifts a plain 'These c a' value into a chronicle mMonadChronicle instance.
Instances
| MonadChronicle c m => MonadChronicle c (MaybeT m) Source # | |
Defined in Control.Monad.Chronicle.Class Methods dictate :: c -> MaybeT m () Source # disclose :: Default a => c -> MaybeT m a Source # confess :: c -> MaybeT m a Source # memento :: MaybeT m a -> MaybeT m (Either c a) Source # absolve :: a -> MaybeT m a -> MaybeT m a Source # condemn :: MaybeT m a -> MaybeT m a Source # | |
| Semigroup c => MonadChronicle c (These c) Source # | |
Defined in Control.Monad.Chronicle.Class Methods dictate :: c -> These c () Source # disclose :: Default a => c -> These c a Source # confess :: c -> These c a Source # memento :: These c a -> These c (Either c a) Source # absolve :: a -> These c a -> These c a Source # condemn :: These c a -> These c a Source # | |
| (Monoid w, MonadChronicle c m) => MonadChronicle c (WriterT w m) Source # | |
Defined in Control.Monad.Chronicle.Class Methods dictate :: c -> WriterT w m () Source # disclose :: Default a => c -> WriterT w m a Source # confess :: c -> WriterT w m a Source # memento :: WriterT w m a -> WriterT w m (Either c a) Source # absolve :: a -> WriterT w m a -> WriterT w m a Source # condemn :: WriterT w m a -> WriterT w m a Source # retcon :: (c -> c) -> WriterT w m a -> WriterT w m a Source # | |
| (Monoid w, MonadChronicle c m) => MonadChronicle c (WriterT w m) Source # | |
Defined in Control.Monad.Chronicle.Class Methods dictate :: c -> WriterT w m () Source # disclose :: Default a => c -> WriterT w m a Source # confess :: c -> WriterT w m a Source # memento :: WriterT w m a -> WriterT w m (Either c a) Source # absolve :: a -> WriterT w m a -> WriterT w m a Source # condemn :: WriterT w m a -> WriterT w m a Source # retcon :: (c -> c) -> WriterT w m a -> WriterT w m a Source # | |
| MonadChronicle c m => MonadChronicle c (StateT s m) Source # | |
Defined in Control.Monad.Chronicle.Class Methods dictate :: c -> StateT s m () Source # disclose :: Default a => c -> StateT s m a Source # confess :: c -> StateT s m a Source # memento :: StateT s m a -> StateT s m (Either c a) Source # absolve :: a -> StateT s m a -> StateT s m a Source # condemn :: StateT s m a -> StateT s m a Source # | |
| MonadChronicle c m => MonadChronicle c (StateT s m) Source # | |
Defined in Control.Monad.Chronicle.Class Methods dictate :: c -> StateT s m () Source # disclose :: Default a => c -> StateT s m a Source # confess :: c -> StateT s m a Source # memento :: StateT s m a -> StateT s m (Either c a) Source # absolve :: a -> StateT s m a -> StateT s m a Source # condemn :: StateT s m a -> StateT s m a Source # | |
| MonadChronicle c m => MonadChronicle c (ReaderT r m) Source # | |
Defined in Control.Monad.Chronicle.Class Methods dictate :: c -> ReaderT r m () Source # disclose :: Default a => c -> ReaderT r m a Source # confess :: c -> ReaderT r m a Source # memento :: ReaderT r m a -> ReaderT r m (Either c a) Source # absolve :: a -> ReaderT r m a -> ReaderT r m a Source # condemn :: ReaderT r m a -> ReaderT r m a Source # retcon :: (c -> c) -> ReaderT r m a -> ReaderT r m a Source # | |
| MonadChronicle c m => MonadChronicle c (ExceptT e m) Source # | |
Defined in Control.Monad.Chronicle.Class Methods dictate :: c -> ExceptT e m () Source # disclose :: Default a => c -> ExceptT e m a Source # confess :: c -> ExceptT e m a Source # memento :: ExceptT e m a -> ExceptT e m (Either c a) Source # absolve :: a -> ExceptT e m a -> ExceptT e m a Source # condemn :: ExceptT e m a -> ExceptT e m a Source # retcon :: (c -> c) -> ExceptT e m a -> ExceptT e m a Source # | |
| (Error e, MonadChronicle c m) => MonadChronicle c (ErrorT e m) Source # | |
Defined in Control.Monad.Chronicle.Class Methods dictate :: c -> ErrorT e m () Source # disclose :: Default a => c -> ErrorT e m a Source # confess :: c -> ErrorT e m a Source # memento :: ErrorT e m a -> ErrorT e m (Either c a) Source # absolve :: a -> ErrorT e m a -> ErrorT e m a Source # condemn :: ErrorT e m a -> ErrorT e m a Source # | |
| MonadChronicle c m => MonadChronicle c (IdentityT m) Source # | |
Defined in Control.Monad.Chronicle.Class Methods dictate :: c -> IdentityT m () Source # disclose :: Default a => c -> IdentityT m a Source # confess :: c -> IdentityT m a Source # memento :: IdentityT m a -> IdentityT m (Either c a) Source # absolve :: a -> IdentityT m a -> IdentityT m a Source # condemn :: IdentityT m a -> IdentityT m a Source # retcon :: (c -> c) -> IdentityT m a -> IdentityT m a Source # | |
| (Semigroup c, Monad m) => MonadChronicle c (ChronicleT c m) Source # | |
Defined in Control.Monad.Chronicle.Class Methods dictate :: c -> ChronicleT c m () Source # disclose :: Default a => c -> ChronicleT c m a Source # confess :: c -> ChronicleT c m a Source # memento :: ChronicleT c m a -> ChronicleT c m (Either c a) Source # absolve :: a -> ChronicleT c m a -> ChronicleT c m a Source # condemn :: ChronicleT c m a -> ChronicleT c m a Source # retcon :: (c -> c) -> ChronicleT c m a -> ChronicleT c m a Source # chronicle :: These c a -> ChronicleT c m a Source # | |
| (Monoid w, MonadChronicle c m) => MonadChronicle c (RWST r w s m) Source # | |
Defined in Control.Monad.Chronicle.Class Methods dictate :: c -> RWST r w s m () Source # disclose :: Default a => c -> RWST r w s m a Source # confess :: c -> RWST r w s m a Source # memento :: RWST r w s m a -> RWST r w s m (Either c a) Source # absolve :: a -> RWST r w s m a -> RWST r w s m a Source # condemn :: RWST r w s m a -> RWST r w s m a Source # retcon :: (c -> c) -> RWST r w s m a -> RWST r w s m a Source # | |
| (Monoid w, MonadChronicle c m) => MonadChronicle c (RWST r w s m) Source # | |
Defined in Control.Monad.Chronicle.Class Methods dictate :: c -> RWST r w s m () Source # disclose :: Default a => c -> RWST r w s m a Source # confess :: c -> RWST r w s m a Source # memento :: RWST r w s m a -> RWST r w s m (Either c a) Source # absolve :: a -> RWST r w s m a -> RWST r w s m a Source # condemn :: RWST r w s m a -> RWST r w s m a Source # retcon :: (c -> c) -> RWST r w s m a -> RWST r w s m a Source # | |
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 mappend.
Constructors
| ChronicleT | |
Fields
| |
Instances
class Semigroup a => Monoid a where #
Minimal complete definition
Instances
| Monoid Ordering | |
| Monoid () | |
| Monoid ByteString | |
| Monoid ByteString | |
| Monoid Builder | |
| Monoid Series | |
| Monoid Any | |
| Monoid All | |
| Monoid IntSet | |
| Monoid More | |
| Monoid Doc | |
| Monoid ByteArray | |
| Monoid ShortByteString | |
| Monoid [a] | |
| Semigroup a => Monoid (Maybe a) | |
| Monoid a => Monoid (IO a) | |
| Monoid p => Monoid (Par1 p) | |
| Monoid (IResult a) | |
| Monoid (Result a) | |
| Monoid (Parser a) | |
| Monoid a => Monoid (Identity a) | |
| Num a => Monoid (Product a) | |
| Num a => Monoid (Sum a) | |
| Monoid (Endo a) | |
| Monoid a => Monoid (Dual a) | |
| Monoid (Last a) | |
| Monoid (First a) | |
| Semigroup a => Monoid (Option a) | |
| Monoid m => Monoid (WrappedMonoid m) | |
Defined in Data.Semigroup Methods mempty :: WrappedMonoid m # mappend :: WrappedMonoid m -> WrappedMonoid m -> WrappedMonoid m # mconcat :: [WrappedMonoid m] -> WrappedMonoid m # | |
| (Ord a, Bounded a) => Monoid (Max a) | |
| (Ord a, Bounded a) => Monoid (Min a) | |
| Prim a => Monoid (Vector a) | |
| Storable a => Monoid (Vector a) | |
| Ord a => Monoid (Set a) | |
| (Hashable a, Eq a) => Monoid (HashSet a) | |
| Monoid (Vector a) | |
| Monoid (Seq a) | |
| Monoid (IntMap a) | |
| Monoid a => Monoid (Down a) | |
| Monoid (PutM ()) | |
| Monoid (Doc a) | |
| Monoid (Array a) | |
| Monoid (DList a) | |
| Monoid (PrimArray a) | |
| Monoid (SmallArray a) | |
| PrimUnlifted a => Monoid (UnliftedArray a) | |
| Monoid (MergeSet a) | |
| Monoid b => Monoid (a -> b) | |
| Monoid (U1 p) | |
| (Monoid a, Monoid b) => Monoid (a, b) | |
| (Eq k, Hashable k) => Monoid (HashMap k v) | |
| Ord k => Monoid (Map k v) | |
| Monoid (Proxy s) | |
| Monoid (ReifiedFold s a) | |
Defined in Control.Lens.Reified Methods mempty :: ReifiedFold s a # mappend :: ReifiedFold s a -> ReifiedFold s a -> ReifiedFold s a # mconcat :: [ReifiedFold s a] -> ReifiedFold s a # | |
| Monoid (Deepening i a) | This is an illegal |
| Monoid (f a) => Monoid (Indexing f a) |
|
| Monoid (Parser i a) | |
| Monoid a => Monoid (ST s a) | |
| Monoid (f p) => Monoid (Rec1 f p) | |
| (Monoid a, Monoid b, Monoid c) => Monoid (a, b, c) | |
| Alternative f => Monoid (Alt f a) | |
| (Applicative f, Monoid a) => Monoid (Ap f a) | |
| Monoid a => Monoid (Const a b) | |
| Monoid (ReifiedIndexedFold i s a) | |
Defined in Control.Lens.Reified Methods mempty :: ReifiedIndexedFold i s a # mappend :: ReifiedIndexedFold i s a -> ReifiedIndexedFold i s a -> ReifiedIndexedFold i s a # mconcat :: [ReifiedIndexedFold i s a] -> ReifiedIndexedFold i s a # | |
| (Semigroup a, Monoid a) => Monoid (Tagged s a) | |
| Monoid a => Monoid (Constant a b) | |
| Reifies s (ReifiedMonoid a) => Monoid (ReflectedMonoid a s) | |
| ArrowPlus p => Monoid (Tambara p a b) | |
| Monoid c => Monoid (K1 i c p) | |
| (Monoid (f p), Monoid (g p)) => Monoid ((f :*: g) p) | |
| (Monoid a, Monoid b, Monoid c, Monoid d) => Monoid (a, b, c, d) | |
| Monoid (f p) => Monoid (M1 i c f p) | |
| Monoid (f (g p)) => Monoid ((f :.: g) p) | |
| (Monoid a, Monoid b, Monoid c, Monoid d, Monoid e) => Monoid (a, b, c, d, e) | |