Haskell Platform Proposal: add transformers and revise the mtl package to depend on it

Thomas Schilling nominolo at googlemail.com
Thu Sep 16 11:11:17 EDT 2010


+1

Thanks for taking the time to create this proposal.  The mtl vs.
transformers issue has been bugging me for a while.

The only other comment I have:

On 16 September 2010 09:23, Ross Paterson <ross at soi.city.ac.uk> wrote:
>  * simple monads are now aliases for monad trasformers applied to Identity,
>   e.g.
>
>        newtype Reader r a = Reader { runReader :: r -> a }
>
>   is replaced by
>
>        type Reader r = ReaderT r Identity
>
>        reader :: (r -> a) -> Reader r a
>        reader f = ReaderT (Identity . f)
>
>        runReader :: Reader r a -> r -> a
>        runReader m = runIdentity . runReaderT m
>
>   Rationale: This avoids repetition in the interfaces of both
>   transformers and the proposed mtl-2.  It makes transformers more useful
>   on its own, and also saves clients of mtl from defining instances
>   for both Reader r and ReaderT r and ensuring that they are consistent.

I agree with Johan that this could be an issue.  Monad transformers
are known to cause performance problems while I haven't heard about
serious issues with the standard monads.  It's probably not that hard
to get some numbers for this.

/ Thomas


More information about the Libraries mailing list