censor +transformers

censor :: (Monoid w, Monad m) => (w -> w) -> RWST r w s m a -> RWST r w s m a
transformers Control.Monad.Trans.RWS.Lazy, transformers Control.Monad.Trans.RWS.Strict
censor f m is an action that executes the action m and applies the function f to its output, leaving the return value unchanged. *  f m = pass (liftM (\x -> > (x,f)) *  (censor f m) r s = liftM (\(a, > w) -> (a, f w)) (runRWST m r  
censor :: (Monoid w, Monad m) => (w -> w) -> WriterT w m a -> WriterT w m a
transformers Control.Monad.Trans.Writer.Lazy, transformers Control.Monad.Trans.Writer.Strict
censor f m is an action that executes the action m and applies the function f to its output, leaving the return value unchanged. *  f m = pass (liftM (\x -> > (x,f)) *  (censor f m) = liftM (\(a, w) > -> (a, f w)) (runWriterT