An instance Functor Maybe was missing, and I tried to add it to
Prelude (where both Functor and Maybe are defined, to avoid orphan
instance issues). It turns out, every time Prelude.hs is recompiled,
its interface file is overwritten with one from bootstrap. What is the
purpose of this? I'd assume the opposite: if Prelude got recompiled,
the bootstrap interface has to be updated, so one getting a clean
distribution would have prelude interface intact. Is this an error in
SConscript? Or am I missing something?

For now, I just commented out three lines in SConscript responsible
for the yhc-base package compilation. The new instance is now visible.

I haven't committed this to the central repo; I'd like to get some
explanation of this first.

I also haven't submitted a patch that also had to implement instance Functor Maybe. We seem to have a very similar problem.

Apparently there are problems with orphan instances, and perhaps
passing -prelude when compiling the file with the instance in it will
work. If that doesn't work email the list, since its probably an nhc
issue originally.

For clarity:

I did a quick test. I think that orphan instances work when they involve non-prelude names. What I was told by someone else is that all names that appear in the prelude might not be exported unless -prelude, which is a different problem.

I originally suggested that orphan instances didn't work because it didn't occur to me that prelude names would be given special treatment.

--Lane
_______________________________________________
Yhc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/yhc

Reply via email to