Could iteratee depend on mtl instead of transformers?

Ross Paterson ross at
Tue Nov 24 07:30:08 EST 2009

On Tue, Nov 24, 2009 at 10:26:56AM -0000, Sittampalam, Ganesh wrote:
> Ross Paterson wrote:
> >     Could not find module `Control.Monad.Identity':
> >       it was found in multiple packages: mtl-2.0 transformers-
> This is annoying, but can be worked around with -hide-package. We could
> also deprecate mtl as part of the migration, encouraging people to move
> away from it as quickly as possible. After a bit it could be removed
> from the platform, which would mean that people would only end up with
> it on their systems if they install it or something that still depends
> on it.

So the proposal is that HP should contain mtl-2.0, monads-fd and
transformers, but with mtl hidden.  Could the HP do that?

> > (Unless we introduce virtual packages.) 
> What functionality would virtual packages have? Presumably in this
> instance they'd need to provide some mechanism for GHC to recognise that
> you get the same result by importing the modules from either source.

I was imagining something that would be implemented in Cabal, so you
could say somewhere something like

mtl >= 2  =  transformers >, monads-fd >=

and Cabal would build packages with an unversioned dependency on mtl
using the other two instead.  That would still leave old versions of
mtl needing hiding, though.

More information about the Libraries mailing list