On Tuesday 13 January 2009 5:51:09 pm Luke Palmer wrote:
> On Tue, Jan 13, 2009 at 11:21 AM, Tim Newsham <newsham@xxxxxxxx> 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.
You mean it should be Writer instead?
When GHC starts optimizing (Writer Builder) as well as it optimizes PutM, then
that will be a cogent argument. Until then, one might argue that it misses
"the whole point of Put".
Haskell-Cafe mailing list