Sound polymorphic type inference for objects

A polymorphic, constraint-based type inference algorithm for an object-oriented language is defined. A generalized form of type, polymorphic recursively constrained types, are inferred. These types are expressive enough for typing objects, since they generalize recursive types and F-bounded polymorphism. The well-known tradeoff between inheritance and subtyping is mitigated by the type inference mechanism. Soundness and completeness of type inference are established.

[1]  Martín Abadi,et al.  A semantics of object types , 1994, Proceedings Ninth Annual IEEE Symposium on Logic in Computer Science.

[2]  John C. Mitchell,et al.  F-bounded polymorphism for object-oriented programming , 1989, FPCA.

[3]  Alexander Aiken,et al.  Type inclusion constraints and type inference , 1993, FPCA '93.

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

[5]  Daniel H. H. Ingalls A simple technique for handling multiple polymorphism , 1986, OOPSLA 1986.

[6]  John G. Hosking,et al.  Multi-Methods in a Statically-Typed Programming Language , 1991, ECOOP.

[7]  Kim B. Bruce,et al.  PolyTOIL: A Type-Safe Polymorphic Object-Oriented Language , 1995, ECOOP.

[8]  Kim B. Bruce,et al.  Safe and decidable type checking in an object-oriented language , 1993, OOPSLA '93.

[9]  Akinori Yonezawa,et al.  A Complete Type Inference System for Subtyped Recursive Types , 1994, TACS.

[10]  Pierre Jouvelot,et al.  The type and effect discipline , 1992, [1992] Proceedings of the Seventh Annual IEEE Symposium on Logic in Computer Science.

[11]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Inf. Comput..

[12]  Andrew A. Chien,et al.  Precise concrete type inference for object-oriented languages , 1994, OOPSLA 1994.

[13]  Jens Palsberg,et al.  Object-oriented type systems , 1994, Wiley professional computing.

[14]  Mads Tofte,et al.  Type Inference for Polymorphic References , 1990, Inf. Comput..

[15]  Robin Milner,et al.  Definition of standard ML , 1990 .

[16]  John C. Reynolds,et al.  Three Approaches to Type Structure , 1985, TAPSOFT, Vol.1.

[17]  Jens Palsberg,et al.  Making Type Inference Practical , 1992, ECOOP.

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

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

[20]  Samuel N. Kamin,et al.  Two semantic models of object-oriented languages , 1994 .

[21]  Stefan Kaes Type inference in the presence of overloading, subtyping and recursive types , 1992, LFP '92.

[22]  Pavel Curtis Constrained qualification in polymorphic type analysis , 1990 .

[23]  J. Palsberg,et al.  Safety Analysis versus Type Inference for Partial Types , 1992 .

[24]  William R. Cook,et al.  Inheritance is not subtyping , 1989, POPL '90.

[25]  Scott F. Smith,et al.  Type inference for recursively constrained types and its application to OOP , 1995, MFPS.

[26]  Luca Cardelli,et al.  On Binary Methods , 1995, Theory Pract. Object Syst..

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

[28]  Alan Mycroft Object-Oriented Type Systems , 1995 .

[29]  Scott F. Smith,et al.  Application of OOP Type Theory: State, Decidability, Integragtion , 1994, OOPSLA.

[30]  Giuseppe Castagna,et al.  Covariance and contravariance: conflict without a cause , 1995, TOPL.

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