Type Checking Type Classes

Tobias Nipkow, Christian Prehofer

We study the type inference problem for a system with type classes as in the functional programming language Haskell. Type classes are an extension of ML-style polymorphism with overloading. We generalize Milner's work on polymorphism by introducing a separate context constraining the type variables in a typing judgement. This leads to simple type inference systems and algorithms which closely resemble those for ML. In particular we present a new unification algorithm which is an extension of syntactic unification with constraint solving. The existence of principal types follows from an analysis of this unification algorithm.


author="Tobias Nipkow and Christian Prehofer",
title="Type Checking Type Classes",
booktitle="Proc.\ 20th ACM Symp.\ Principles of Programming Languages",
publisher="ACM Press",pages="409--418",year=1993}
A revised version appeared in Journal of Functional Programming.