Expose less type/class info in an interface file, to reduce recompilation
John Meacham writes "However, whenever I change a data type or class even if they are not exported, it seems to force a full rebuild of everything that depends on that file. Is there any fundamental reason this can't be fixed? why do the non exported classes and data types end up in the hi file anyway (assuming they appear in no exported functions type signature of course)."
Solution: Fix GHC so that it doesn't expose a data type at all if nothing about it is exported; and doesn't its constructors if they are not exported, and not used in any unfolding.
Doing this would reduce recompilation changes.