restructuring the mtl

Ross Paterson ross at
Mon Mar 26 14:25:26 EDT 2007

On Wed, Mar 07, 2007 at 11:59:24PM +0000, Ross Paterson wrote:
> I propose that we restructure and split the mtl into two packages:
> mtl-base: a Haskell-98 package containing the monad transformers
> and non-overloaded versions of the operations, [...]
> mtl (depending on mtl-base): multi-parameter+FD type classes with
> instances for the transformers in mtl-base, [...]
> One benefit is that it would be possible to use monad transformers in
> portable programs, at the cost of a little explicit lifting of operations.
> Often when I use a stack of monad transformers, I define aliases for the
> new monad and its operations, so this wouldn't be much extra effort.
> A second benefit is that one could introduce other packages with other
> interfaces, e.g. one using associated types.
> The revised mtl would be almost compatible with the existing one, except
> 1) The monad transformer and corresponding monad would have the same
>    strictness (this has already been done in the HEAD).
> 2) It wouldn't be possible to declare instances for the corresponding monad.

I have had a go at this re-organization:

src:	darcs get

The plan is to split Control.Monad.Identity, Control.Monad.Trans and
Control.Monad.Trans.* off into a separate (portable) package.

More information about the Libraries mailing list