[project @ 2005-02-25 13:06:31 by simonpj]
---------------------------------------------
Type signatures are no longer instantiated with skolem constants
---------------------------------------------
Merge to STABLE
Consider
p :: a
q :: b
(p,q,r) = (r,r,p)
Here, 'a' and 'b' end up being the same, because they are both bound
to the type for 'r', which is just a meta type variable. So 'a' and 'b'
can't be skolems.
Sigh. This commit goes back to an earlier way of doing things, by
arranging that type signatures get instantiated with *meta* type
variables; then at the end we must check that they have not been
unified with types, nor with each other.
This is a real bore. I had to do quite a bit of related fiddling around
to make error messages come out right. Improved one or two.
Also a small unrelated fix to make
:i (:+)
print with parens in ghci. Sorry this got mixed up in the same commit.
19 files changed: