WriterT
A writer monad parameterized by:
* w - the output to accumulate.
* m - The inner monad.
The return function produces the output mempty, while >>= combines the outputs of the subcomputations using mappend.
Map both the return value and output of a computation using the given function.
* (mapWriterT f m) = f
> (runWriterT