censor -mtl
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 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