
Bulat Ziganshin wrote:
Hello Simon,
Tuesday, April 3, 2007, 2:21:34 PM, you wrote:
This is not an attempt to solve all the issues we have in one go, but a practical incremental step towards the goal. I'm not trying to make base compiler-independent for example; that's a worthy goal, but it's not clear (at least to me) how to get there yet.
i'm all for this plan. long way starts with first step
about "making base compiler-independent". its *interface* is already compiler-independent. if you say about implementation, it seems rather obvious for me - split it into ghc-base package that includes GHC.* and modules on which GHC.* depend and new-base package which contains the rest. then move any "#ifdef GHC" code into from new-base into *hc-base. then, as time permits, we can start to move ghc-independent code from ghc-base into new-base. meantime, faking Base package may be established that just reexports ghc-base and new-base, so user will not depend on where we moved each particular module
Apart from anything else, we don't actually have support for packages that re-expose modules from other packages. This is an important feature and will indeed make package refactoring easier - care to look into implementing it? :-) Cheers, Simon