Object-oriented programming without recursive types

It is widely agreed that recursive types are inherent in the static typing of the essential mechanisms of object-oriented programming: encapsulation, message passing, subtyping, and inheritance. We demonstrate here that modeling object encapsulation in terms of existential types yields a substantially more straightforward explanation of these features in a simpler calculus without recursive types.

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

[2]  Giorgio Ghelli,et al.  Coherence of Subsumption , 1990, CAAP.

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

[4]  John C. Mitchell,et al.  PER models of subtyping, recursive types and higher-order polymorphism , 1992, POPL '92.

[5]  Daniel G. Bobrow,et al.  Common lisp object system specification , 1988, SIGP.

[6]  John C. Mitchell Toward a typed foundation for method specialization and inheritance , 1989, POPL '90.

[7]  John C. Mitchell,et al.  Abstract types have existential types , 1985, POPL.

[8]  Luca Cardelli,et al.  Operations on Records , 1989, Mathematical Foundations of Programming Semantics.

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

[10]  Luca Cardelli,et al.  Operations on Records (Summary) , 1989 .

[11]  M. Wand,et al.  Corrigendum: complete type interference for simple objects , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[12]  Hendrik Pieter Barendregt,et al.  Introduction to generalized type systems , 1991, Journal of Functional Programming.

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

[14]  John C. Mitchell,et al.  An extension of standard ML modules with subtyping and inheritance , 1991, POPL '91.

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

[16]  Daniel G. Bobrow,et al.  Common Lisp Object System Specification X2JI3 Document 88-002R , 1988 .

[17]  Luca Cardelli,et al.  Typed Foundations of Object-oriented Programming , 1994 .

[18]  William R. Cook,et al.  Object-Oriented Programming Versus Abstract Data Types , 1990, REX Workshop.

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

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

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

[22]  Günter Asser,et al.  Zeitschrift für mathematische Logik und Grundlagen der Mathematik , 1955 .

[23]  Mariangiola Dezani-Ciancaglini,et al.  Functional Characters of Solvable Terms , 1981, Math. Log. Q..

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

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

[26]  Alan Borning,et al.  Classes versus Prototypes in Object-Oriented Languages , 1986, FJCC.

[27]  Luca Cardelli,et al.  An Extension of System F with Subtyping , 1991, TACS.

[28]  Luca Cardelli,et al.  Structural subtyping and the notion of power type , 1988, POPL '88.

[29]  John C. Reynolds User-defined types and procedural data structures as complementary approaches to data abstraction , 1994 .

[30]  Benjamin C. Pierce,et al.  Higher-Order Subtyping , 1994, Theor. Comput. Sci..

[31]  Timothy A. Budd,et al.  An introduction to object-oriented programming , 1991 .

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

[33]  B. Pierce Programming with intersection types and bounded polymorphism , 1992 .

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

[35]  Giorgio Ghelli A static type system for message passing , 1991, OOPSLA 1991.

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

[37]  J. Y. Girard,et al.  Interpretation fonctionelle et elimination des coupures dans l'aritmetique d'ordre superieur , 1972 .

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

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

[40]  Kim B. Bruce The Equivalence of Two Semantic Definitions for Inheritance in Object-Oriented Languages , 1991, MFPS.

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

[42]  Giuseppe Castagna,et al.  A calculus for overloaded functions with subtyping , 1992, LFP '92.

[43]  Luca Cardelli,et al.  Extensible records in a pure calculus of subtyping , 1994 .

[44]  Kim B. Bruce,et al.  A modest model of records, inheritance and bounded quantification , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.