On Mon, 2005-05-02 at 15:57 -0400, robert dockins wrote:
Is there a way to reliably and automatically check if two versions of a haskell module are interface compatible?
No, because it would have to check whether the semantics of functions is the same, even if they are written differently.
Of course, we cannot expect the computer to examine the semantics. We must rely on people to know when semantics change.
Suppose I want to ask the easier question "do these two text files implement haskell modules which are _type_ compatable?", how would I do it? Ie, I want the test to fail if I change the type of some function foo, or if I add a method to a class declaration etc.
You can extract this information from ghc's .hi files. You'd need to filter and munge the info a bit but take a look at the output from $ ghc --show-iface Blah.hi It would be useful to have a tool that emits the 'signature' of a module so you can compare between versions for API changes. Duncan