Skip to content
  • Simon Peyton Jones's avatar
    [project @ 2005-02-25 13:06:31 by simonpj] · 8e67f550
    Simon Peyton Jones authored
    ---------------------------------------------
    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.
    8e67f550