Stricter WriterT (Part II)

Gabriel Gonzalez gabriel439 at
Tue Mar 19 16:07:09 CET 2013

> Presumably we'll also need
> writerT :: m (a, w) -> WriterT w m a

Yes, we would need that, too:

writerT m = WriterT $ \w -> do
     (a, w') <- m
     let wt = mappend w w'
     wt `seq` return (a, wt)

> Is there any reason to keep Control.Monad.Trans.Writer.Strict, or should this replace it?

If we replace the old one, it will break existing code that used the `WriterT` constructor.  Same thing for the strict RWST constructor if we similarly modify that.  However, I don't know exactly how many packages use those constructors.  I will try to do a text search of Hackage this coming weekend to check and see if it is feasible to ask downstream packages that use `WriterT`/`RWST` constructors to set upper bounds on `transformers`.

More information about the Libraries mailing list