Type inference for record concatenation and multiple inheritance

The author shows that the type inference problem for a lambda calculus with records, including a record concatenation operator, is decidable. He shows that this calculus does not have principal types but does have finite complete sets of type, that is, for any term M in the calculus, there exists an effectively generable finite set of type schemes such that every typing for M is an instance of one of the schemes in the set. The author shows how a simple model of object-oriented programming, including hidden instance variables and multiple inheritance, may be coded in this calculus. The author concludes that type inference is decidable for object-oriented programs, even with multiple inheritance and classes as first-class values.<<ETX>>

[1]  William R. Cook,et al.  A self-ish model of inheritance , 1987 .

[2]  David K. Gifford,et al.  Type reconstruction with first-class polymorphic values , 1989, PLDI '89.

[3]  Ryan Stansifer,et al.  Type inference with subtypes , 1988, POPL '88.

[4]  John C. Mitchell,et al.  ML with extended pattern matching and subtypes , 1988, LISP and Functional Programming.

[5]  Luca Cardelli,et al.  Basic Polymorphic Typechecking , 1987, Sci. Comput. Program..

[6]  R. Hindley The Principal Type-Scheme of an Object in Combinatory Logic , 1969 .

[7]  Didier Rémy,et al.  Type checking records and variants in a natural extension of ML , 1989, POPL '89.

[8]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[9]  Robin Milner,et al.  A Theory of Type Polymorphism in Programming , 1978, J. Comput. Syst. Sci..

[10]  John C. Mitchell,et al.  Coercion and type inference , 1984, POPL.

[11]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Information and Computation.

[12]  Mitchell Wand,et al.  Complete Type Inference for Simple Objects , 1987, LICS.

[13]  Uday S. Reddy,et al.  Objects as closures: abstract semantics of object-oriented languages , 1988, LISP and Functional Programming.

[14]  Dominique Clément,et al.  A simple applicative language: mini-ML , 1986, LFP '86.

[15]  Mitchell Wand,et al.  Embedding type structure in semantics , 1985, POPL.

[16]  Samuel N. Kamin Inheritance in smalltalk-80: a denotational definition , 1988, POPL '88.