Portability  portable 

Stability  provisional 
Maintainer  Edward Kmett <ekmett@gmail.com> 
Safe Haskell  Trustworthy 
The trace comonad builds up a result by prepending monoidal values to each other.
This module specifies the traced comonad transformer (aka the cowriter or exponential comonad transformer).
 type Traced m = TracedT m Identity
 traced :: (m > a) > Traced m a
 runTraced :: Traced m a > m > a
 newtype TracedT m w a = TracedT {
 runTracedT :: w (m > a)
 trace :: Comonad w => m > TracedT m w a > a
 listen :: Functor w => TracedT m w a > TracedT m w (a, m)
 listens :: Functor w => (m > b) > TracedT m w a > TracedT m w (a, b)
 censor :: Functor w => (m > m) > TracedT m w a > TracedT m w a
Traced comonad
Traced comonad transformer
TracedT  

(ComonadEnv e w, Monoid m) => ComonadEnv e (TracedT m w)  
(ComonadStore s w, Monoid m) => ComonadStore s (TracedT m w)  
(Comonad w, Monoid m) => ComonadTraced m (TracedT m w)  
Monoid m => ComonadTrans (TracedT m)  
Monoid m => ComonadHoist (TracedT m)  
Functor w => Functor (TracedT m w)  
(Typeable s, Typeable1 w) => Typeable1 (TracedT s w)  
Applicative w => Applicative (TracedT m w)  
Distributive w => Distributive (TracedT m w)  
(ComonadApply w, Monoid m) => ComonadApply (TracedT m w)  
(Comonad w, Monoid m) => Comonad (TracedT m w) 