| Ashley:
| What is an orphan instance, and why do we care about them?

They are documented in the GHC manual
http://www.haskell.org/ghc/docs/latest/html/users_guide/separate-compilation.html#orphan-modules

| Wolfram:
| I just would like to point out that there is nothing inherently bad about
| what GHC calls ``orphan instances''.  ... that there is no 
*implementation-independent*
| reason to avoid ``orphan instances''.
|
| From a code structuring point of view,
| I frequently ``consider orphan'' instances
| useful for separation of concerns.

I agree.  The warning just warns you that compilation of any module that 
depends on this module, or on the package of which this module becomes a part, 
will become a little slower, for reasons explained above.

| (On the implementation side, a completely different solution would be
|  to add (automatically) re-exported instances (and rewrite rules)
|  to the export lists stored inside .hi files ---
|  then ``orphan instances'' would be no worse than other instances.)

Indeed, you could certainly accumulate in every M.hi file a list of all orphan 
instances anywhere below M.   What GHC does instead is to accumulate a list of 
all the *modules that contain* orphan instances, which amounts to much the same 
thing.  Either way it's tiresome because all these instances must be brought 
into scope for every compilation, even though most of them are useless.

As you say, though, it's just an implementation matter.  That's why it's only a 
warning.

Simon

_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to