[project @ 1999-03-17 10:06:21 by simonpj]
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'
Please register or sign in to comment