Haskell and principal types

Olaf Chitil olaf@cs.york.ac.uk
Wed, 10 Oct 2001 18:13:49 +0100

Hi Karl-Filip,

> (Mark Jones's THIH algorithm, as
> well as other algorithms built on W, fails to type some programs
> containing type synonyms).

Are you thinking of the following kind of problem?

type T a = Bool

b :: Eq a => T a
b = True

x = b

Gives in Hugs:
Type checking      
ERROR "Test.hs" (line 8): Unresolved top-level overloading
*** Binding             : x
*** Outstanding context : Eq b

The problem is the lazy expansion of type synonyms in the type inference
algorithm. To produce better type error messages a type synoym is only
expanded when it is unified with some different type.

There isn't any problem if you first eagerly expand all type synonyms
and thus eliminate them from your program and then perform type
inference, is there?


 Dept. of Computer Science, University of York, York YO10 5DD, UK. 
 URL: http://www.cs.york.ac.uk/~olaf/
 Tel: +44 1904 434756; Fax: +44 1904 432767