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