Stefan Kaes. Type Inference in the Presence of Overloading, Subtyping and Recursive Types. In Proceedings of the 1992 ACM Conference on LISP and Functional Programming. LFP '92, pages 193-204, Association for Computing Machinery, New York, NY, USA, 1992. [doi]
We present a unified approach to type inference in the presence of overloading and coercions based on the concept of constrained types. We define a generic inference system, show that subtyping and overloading can be treated as a special instance of this system and develop a simple algorithm to compute principal types. We prove the decidability of type inference for the class of decomposable predicates and develop a canonical representation for principal types based on most accurate simplifications of constraint sets. Finally, we investigate the extension of our techniques to recursive types.