Proposal: Make mtl lazier

Ian Lynagh igloo at
Wed Jan 31 07:53:46 EST 2007

On Tue, Jan 30, 2007 at 05:07:18PM +0000, Chris Kuklewicz wrote:
> I agree that the change improves the consistence of semantics.
> You should amend the proposal to also explain how to restore the previous
> strictness using 'seq'.

I'm not sure what you mean?

> And if StateT is to be fixed, then the same fix should be applied to WriterT, as
> shown in
> And the same fix looks like it should be applied to RWST.
> ErrorT I believe is supposed to be Strict, so it can stop when a (Left _) is found.

Hmm, now I look closer there are a number of other places that look like
they could benefit from a ~. I've attached a new patch and unified diff
of them all to the proposal

and changed the description to match its increased scope.

The changes only affect transformers except for:

     listens :: (MonadWriter w m) => (w -> b) -> m a -> m (a, b)
     listens f m = do
    -   (a, w) <- listen m
    +   ~(a, w) <- listen m
        return (a, f w)

in Control/Monad/Writer.hs


More information about the Libraries mailing list