On Tue, Jan 13, 2009 at 11:21 AM, Tim Newsham <newsham@lava.net> wrote:
I have seen several libraries where all functions of a monad have the
monadic result (), e.g. Binary.Put and other writing functions. This is
a clear indicator, that the Monad instance is artificial and was only
chosen because of the 'do' notation.

Maybe that was the initial reason, but I've actually found the
Binary.Put.PutM (where Put = PutM ()) to be useful.  Sometimes
your putter does need to propogate a result...

But that's the whole point of Writer!  Take a monoid, make it into a monad.  Put as a monad is silly.

Luke