How to play with Control.Monad.Writer in haskell?
stackoverflow.com