NOTE: the latest version is 1.0.1
The definition of writer monad in Haskell is
newtype Writer w a = Writer { runWriter :: (a,w) }
where w should be monoid (with mappend function).
w
We assume you only use List so we replace w with List w
List w
Writer
return function for Writer
Run the writer
bind function for Writer
tell function for Writer
Writer