
I agree with what you're saying, but with cross-module optimisation turned on in GHC, virtually any non-trivial change to the implementation of a module causes a change in the .hi file. So *unless* you turn off cross-module optimisation between the application and the library, you have vitually no hope of ever successfully re-linking the application with a modified version of the library. That would be in violation of the license, no?
If I am not mistaken (anything else wouldn't make much sense), what the license says is that only if the definition files (= .hi) are not changed, can you reasonably expect that re-linking works. This means, in Haskell, you can make very little change to the library. That's bad for the user and good for the vendor of the proprietary code if you like.
This is indeed what the license says if taken literally(*). But it clearly goes against the stated intention of the license, which is to allow re-linking of the application to a modified library. If this interpretation is correct, then with GHC you can conform to the license while still not providing adequate means by which someone can re-link the program to a modified library. This smells like a loophole, and one I expect the FSF would like to clarify. (*) if we take "definitions files" to equate to interface files in Haskell, which is still an interpretation because they are quite different beasts.
I am quite sure that's that the interpretation, because otherwise it would mean that I can change a #define in a header of a lib and expect to relink successfully, which clearly can't be.
This is something, I would also be happy to ask the FSF about if it helps.
please do, and feel free to forward this discussion to them. Cheers, Simon