Object-oriented type inference

We present a new approach to inferring types in untyped objectoriented programs with inheritance, assignments, and late binding. It guarantees that all messages are understood, annotates the program with type information, allows polymorphic methods, and can be used as the basis of an optimizing compiler. Types are finite sets of classes and subtyping is set inclusion. Using a trace graph, our algorithm constructs a set of conditional type constraints and computes the least solution by least fixed-point derivation.

[1]  Norihisa Suzuki,et al.  Inferring types in Smalltalk , 1981, POPL '81.

[2]  Andreas V. Hense Polymorphic type inference for a simple object oriented programming language with state , 1990 .

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

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

[5]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[6]  Jens Palsberg,et al.  A Unified Type System for Object-Oriented Programming , 1990 .

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

[8]  Jeffrey D. Ullman,et al.  A general scheme for the automatic inference of variable types , 1978, POPL.

[9]  Jens Palsberg,et al.  Type substitution for object-oriented programming , 1990 .

[10]  Ralph E. Johnson,et al.  Type-checking Smalltalk , 1986, OOPLSA '86.

[11]  Jens Palsberg,et al.  What is Type-Safe Code Reuse? , 1990, ECOOP.

[12]  J. Palsberg,et al.  Static Typing for Object-Oriented Programming , 1991 .

[13]  Jens Palsberg,et al.  Genericity and inheritance , 1990 .

[14]  Prateek Mishra,et al.  Declaration-free type checking , 1985, POPL.

[15]  Scott Danforth,et al.  Type theories and object-oriented programmimg , 1988, CSUR.

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

[17]  Bruce D. Shriver,et al.  Research Directions in Object-Oriented Programming , 1987 .

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

[19]  William R. Cook,et al.  A denotational semantics of inheritance , 1989 .

[20]  Justin O. Graver,et al.  Type checking and type inference for object-oriented programming languages , 1989 .

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

[22]  Alan Borning,et al.  A type declaration and inference system for smalltalk , 1982, POPL '82.

[23]  Bent Bruun Kristensen,et al.  The BETA Programming Language , 1987, Research Directions in Object-Oriented Programming.

[24]  Al Stevens,et al.  C programming , 1990 .

[25]  Michael I. Schwartzbach,et al.  Type Inference with Inequalities , 1990, TAPSOFT, Vol.1.

[26]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[27]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[28]  Jens Palsberg,et al.  A Denotational Semantics of Inheritance and its Correctness , 1989, OOPSLA.

[29]  Mitchell Wand,et al.  Type inference for record concatenation and multiple inheritance , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[30]  Ralph E. Johnson,et al.  A type system for Smalltalk , 1989, POPL '90.