
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-0.1.4.0
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 > 0.1.4.0, monads-fd >= 0.0.0.1 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.