-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | A monad transformer for tracing provenience of errors
--
@package trace
@version 0.1.0.5
module Control.Monad.Trace.ErrorTrace
-- | A datatype containing an error and its provenience(s).
data ErrorTrace t e
ErrorTrace :: !e -> ![Seq t] -> ErrorTrace t e
-- | The error
_etError :: ErrorTrace t e -> !e
-- | The list of traces (for each path tried)
_etTrace :: ErrorTrace t e -> ![Seq t]
-- | An isomorphism ErrorTrace t e ≅ (e, Seq t).
_ErrorTrace :: (Choice p, Functor f) => p (ErrorTrace t e) (f (ErrorTrace t' e')) -> p (e, [Seq t]) (f (e', [Seq t']))
-- | A lens ErrorTrace t e → e.
etError :: Functor f => (e -> f e') -> ErrorTrace t e -> f (ErrorTrace t e')
-- | A lens ErrorTrace t e → Seq t.
etTrace :: Functor f => ([Seq t] -> f [Seq t']) -> ErrorTrace t e -> f (ErrorTrace t' e)
instance Typeable ErrorTrace
instance Generic (ErrorTrace t e)
instance Datatype D1ErrorTrace
instance Constructor C1_0ErrorTrace
instance Selector S1_0_0ErrorTrace
instance Selector S1_0_1ErrorTrace
instance (Show t, Show e) => Show (ErrorTrace t e)
instance Monoid e => Monoid (ErrorTrace t e)
instance (NFData t, NFData e) => NFData (ErrorTrace t e)
module Control.Monad.Trace.Class
-- | A class for monads that have a scoped tracing effect
class MonadTrace t m | m -> t
traceScope :: MonadTrace t m => t -> m α -> m α
readTrace :: MonadTrace t m => m (Seq t)
module Control.Monad.Trans.Trace
-- | A concrete monad transformer TraceT t e m where
-- t is the type of tags/breadcrumbs, e is the type of
-- errors, and m is the underlying monad.
data TraceT t e m α
-- | Run a traced traced computation to get either its result, or an error
-- and its provenience (ErrorTrace).
runTraceT :: (Functor m, Monad m) => TraceT t e m α -> m (Either (ErrorTrace t e) α)
instance Monad m => Functor (TraceT t e m)
instance Monad m => Monad (TraceT t e m)
instance Monad m => Applicative (TraceT t e m)
instance (Monad m, Monoid e) => Alternative (TraceT t e m)
instance MonadIO m => MonadIO (TraceT t e m)
instance MonadBase b m => MonadBase b (TraceT t e m)
instance MonadBaseControl b m => MonadBaseControl b (TraceT t e m)
instance MonadTransControl (TraceT t e)
instance Monad m => MonadTrace t (TraceT t e m)
instance MonadTrans (TraceT t e)
instance Monad m => MonadError e (TraceT t e m)
module Control.Monad.Trace.Codensity
-- | Add a trace in synchronous style
putTrace :: (Monad m, MonadTrace t m) => t -> Codensity m ()
module Control.Monad.Trace