On Tuesday 13 January 2009 5:51:09 pm Luke Palmer wrote: > On Tue, Jan 13, 2009 at 11:21 AM, Tim Newsham <news...@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.
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". -- Dan _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe