An Imperative, First-Order Calculus with Object Extension

This paper presents an imperative object calculus designed to support class-based programming via a combination of extensible objects and encapsulation. This calculus simplifies the language presented in [17] in that, like C++ and Java, it chooses to support an imperative semantics instead of method specialization. We show how Java-style classes and mixins may be coded in this calculus, prove a type soundness theorem (via a subject reduction property), and give a sound and complete typing algorithm.

[1]  John H. Reppy,et al.  Classes in Object ML via Modules , 1996 .

[2]  Bjarne Stroustrup,et al.  The Design and Evolution of C , 1994 .

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

[4]  John C. Mitchell,et al.  The Development of Type Systems for Object-Oriented Languages , 1995, Theory Pract. Object Syst..

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

[6]  Michele Bugliesi,et al.  A Lambda Calculus of Incomplete Objects , 1996, MFCS.

[7]  Ken Arnold,et al.  The Java Programming Language , 1996 .

[8]  Mark Lillibridge,et al.  A type-theoretic approach to higher-order modules with sharing , 1994, POPL '94.

[9]  Adriana B. Compagnoni,et al.  Higher-order subtyping with intersection types , 1995 .

[10]  Luca Cardelli,et al.  Abstract Types and the Dot Notation , 1990, Programming Concepts and Methods.

[11]  Martín Abadi,et al.  A Theory of Primitive Objects , 1996 .

[12]  John C. Mitchell,et al.  A lambda calculus of objects and method specialization , 1993, [1993] Proceedings Eighth Annual IEEE Symposium on Logic in Computer Science.

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

[14]  Martin Hofmann,et al.  Positive Subtyping , 1996, Inf. Comput..

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

[16]  Scott F. Smith,et al.  Sound polymorphic type inference for objects , 1995, OOPSLA.

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

[18]  John C. Mitchell,et al.  A Delegation-based Object Calculus with Subtying , 1995, FCT.

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

[20]  Luigi Liquori,et al.  A Subtyping for the Fisher-Honsell-Mitchell Lambda Calculus of Objects , 1994, CSL.

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

[22]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

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

[24]  John C. Mitchell,et al.  Type systems for object-oriented programming languages , 1996 .

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

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

[27]  O. J. Dahl,et al.  Simula Begin , 1979 .

[28]  Adriana B. Compagnoni,et al.  Decidability of Higher-Order Subtyping with Intersection Types , 1994, CSL.

[29]  Benjamin C. Pierce,et al.  Statically typed friendly functions via partially abstract types , 1993 .

[30]  John C. Mitchell,et al.  On the Relationship Between Classes, Objects, and Data Abstraction , 1998, Theory Pract. Object Syst..