I accidentally the Prelude
Simon Marlow
marlowsd at gmail.com
Tue Mar 2 11:39:08 EST 2010
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
More information about the Glasgow-haskell-users
mailing list