
On Wed, Oct 14, 2009 at 4:34 AM, Simon Marlow
template-haskell is a one of the packages that we call "wired-in", because GHC needs to generate references to some of the things that it defines. To make GHC independent of the version of the template-haskell package, we internally strip off the version number when referring to template-haskell.
Now, this doesn't completely explain the error you're seeing. When it starts up, GHC has to decide which template-haskell package is the "wired-in" one, and my guess is that it picked the other one (because it is newer). You could find out by running GHC with the -v flag. I think GHC is assuming that when you have multiple versions of a wired-in package that the older ones are wrappers around the newer ones (like base-3 and base-4), but that assumption doesn't hold in your case.
Installing a new version of a wired-in package is going to be problematic, but we ought to be able to at least improve the diagnostics.
Does it make sense to do releases of the template-haskell package on to hackage? It's a bit misleading if I can't then do anything to the package that doesn't leave me broken. (I guess I can `cabal unpack` into my GHC source directory to get a different version ...) Antoine