Skip to content
  • Simon Peyton Jones's avatar
    [project @ 1999-03-17 10:06:21 by simonpj] · fc7b70af
    Simon Peyton Jones authored
    Make it so that Local (i.e. non-top-level) names record
    whether they originally came from an interface file.  This
    means that when unifying two type variables we can readily
    choose one that occurred in the source, rather than one
    imported from an interface file.  That in turn improves 
    compiler error messages.  E.g.
    
      rd :: (RealFloat a, RealFrac b) => b -> Transformation a
      rd degrees  = r ((degrees / 180.0) * pi)
    
    used to say
    
        Could not deduce `Floating a'
    	(arising from use of `pi' at Foo.hs:11)
    	from the context: (RealFloat a1, RealFrac a)
        Probable cause: missing `Floating a' in type signature for `rd'
    
    [here the 'a' came from the signature for 'pi' in PrelBase;
     the 'a1' is a renamed version of the 'a' in the source pgm]
    
    but now says
    
        Could not deduce `Floating b'
    	(arising from use of `pi' at Foo.hs:11)
    	from the context: (RealFloat a, RealFrac b)
        Probable cause: missing `Floating b' in type signature for `rd'
    fc7b70af