On 02/03/2010 15:46, Jeremy Shaw wrote:
I would still vote for that error in the 'worst ghc error message
contest'. I got it just last night with 6.13 when I tried to run the
Setup.hs function in base:

~/n-heptane/projects/haskell/darcs/base-3.0.3.2 $ rm Setup.o Setup.hi
~/n-heptane/projects/haskell/darcs/base-3.0.3.2 $ ghc --make -O2
Setup.hs -o s
[1 of 1] Compiling Main             ( Setup.hs, Setup.o )

Setup.hs:1:1:
     attempting to use module `Prelude' (./Prelude.hs) which is not loaded
~/n-heptane/projects/haskell/darcs/base-3.0.3.2 $ runhaskell Setup.hs
configure

Setup.hs:1:1:
     attempting to use module `Prelude' (./Prelude.hs) which is not loaded
~/n-heptane/projects/haskell/darcs/base-3.0.3.2 $

Oh, the problem here is that GHC hasn't figured out that it should consider Prelude to be a local dependency of Setup, because it only looks at the imports, and Prelude is an implicit import. With Prelude not being found during dependency analysis, it wasn't compiled first, so when we got around to trying to import it we found that it was not "loaded".

Perhaps the implicit import of Prelude should be

  import "base" Prelude

rather than

  import Prelude

that would avoid these problems. But it would present a problem for someone who wanted to use their own Prelude. At the least I guess we should consider Prelude to be an implicit dependency during dependency analysis.

What you wanted to do above was "ghc --make Setup -i", incedentally. And if we fix the dependency thing, you'll still need to do that, because otherwise GHC will try to recompile the whole of base, and something else will almost certainly go wrong because there will be two Preludes.

Cheers,
        Simon
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to