PolyTOIL: A Type-Safe Polymorphic Object-Oriented Language

PolyTOIL is a new statically-typed polymorphic object-oriented programming language which is provably type-safe. By separating the definitions of subtyping and inheritance, providing a name for the type of self, and carefully defining the type-checking rules, we have obtained a language which is very expressive while supporting modular type-checking of classes. The matching relation on types, which is related to F-bounded quantification, is used both in stating type-checking rules and expressing the bounds on type parameters for polymorphism. The design of PolyTOIL is based on a careful formal definition of type-checking rules and semantics. A proof of type safety is obtained with the aid of a subject reduction theorem.

[1]  John C. Reynolds,et al.  Using category theory to design implicit conversions and generic operators , 1980, Semantics-Directed Compiler Generation.

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

[3]  Ole Lehrmann Madsen,et al.  Strong typing of object-oriented languages revisited , 1990 .

[4]  Benjamin C. Pierce,et al.  Simple type-theoretic foundations for object-oriented programming , 1994, Journal of Functional Programming.

[5]  Martín Abadi,et al.  A Theory of Primitive Objects - Scond-Order Systems , 1994, ESOP.

[6]  Gilad Bracha,et al.  Strongtalk: typechecking Smalltalk in a production environment , 1993, OOPSLA '93.

[7]  Kim B. Bruce,et al.  An Operational Semantics for TOOPLE: A Statically-Typed Object-Oriented Programming Language , 1993, MFPS.

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

[9]  William R. Cook,et al.  A Proposal for Making Eiffel Type-Safe , 1989, Comput. J..

[10]  John C. Mitchell,et al.  F-bounded quantification for object-oriented programming , 1989 .

[11]  Luca Cardelli,et al.  Subtyping recursive types , 1993 .

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

[13]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[14]  Kim B. Bruce A paradigmatic object-oriented programming language: Design, static typing and semantics , 1994, Journal of Functional Programming.

[15]  Martín Abadi,et al.  A Theory of Primitive Objects - Untyped and First-Order Systems , 1994, TACS.

[16]  Kim B. Bruce Safe type checking in a statically-typed object-oriented programming language , 1993, POPL '93.

[17]  Martín Abadi,et al.  A Theory of Primitive Objects: Second-Order Systems , 1995, Sci. Comput. Program..

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

[19]  Andrew P. Black,et al.  Typechecking Polymorphism in Emerald , 1996 .

[20]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

[21]  Ole Lehrmann Madsen,et al.  Strong typing of object-oriented languages revisited , 1990, OOPSLA/ECOOP '90.

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

[23]  John C. Mitchell,et al.  A type system for prototyping languages , 1994, POPL '94.

[24]  Martín Abadi,et al.  An Imperative Object Calculus , 1995, TAPSOFT.