A unifying type-theoretic framework for objects

We give a direct type-theoretic characterization of the basic mechanisms of object-oriented programming, objects, methods, message passing, and subtyping, by introducing an explicit Object type constructor and suitable introduction, elimination, and equality rules. The resulting abstract framework provides a common basis for justifying and comparing previous encodings of objects based on recursive record types [7, 9], F-bounded quantification [4, 13, 19], and existential types [23].

[1]  John C. Mitchell,et al.  Notes on Typed Object-Oriented Programming , 1994, TACS.

[2]  Martín Abadi,et al.  Baby Modula-3 and a theory of objects , 1994, Journal of Functional Programming.

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

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

[5]  Andre Scedrov,et al.  Functorial Polymorphism , 1990, Theor. Comput. Sci..

[6]  Martin Odersky,et al.  Polymorphic type inference and abstract data types , 1994, TOPL.

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

[8]  Benjamin C. Pierce,et al.  Programming in higher-order typed lambda-calculi , 1989 .

[9]  Bengt Nordström,et al.  Programming in Martin-Lo¨f's type theory: an introduction , 1990 .

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

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

[12]  Michael Barr,et al.  Category theory for computing science , 1995, Prentice Hall International Series in Computer Science.

[13]  Eugenio Moggi,et al.  Computational lambda-calculus and monads , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

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

[15]  John C. Mitchell,et al.  Theoretical aspects of object-oriented programming: types, semantics, and language design , 1994, Choice Reviews Online.

[16]  Kristen Nygaard,et al.  SIMULA: an ALGOL-based simulation language , 1966, CACM.

[17]  Benjamin C. Pierce,et al.  Object-oriented programming without recursive types , 1993, POPL '93.

[18]  A. Kock Strong functors and monoidal monads , 1972 .

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

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

[21]  Joyce L. Vedral,et al.  Functional Programming Languages and Computer Architecture , 1989, Lecture Notes in Computer Science.

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

[23]  Luca Cardelli,et al.  Subtyping recursive types , 1991, POPL '91.

[24]  John C. Reynolds,et al.  Towards a theory of type structure , 1974, Symposium on Programming.

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

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

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

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

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

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

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

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

[33]  John C. Mitchell,et al.  Abstract types have existential type , 1988, TOPL.

[34]  Horst Reichel,et al.  An approach to object semantics based on terminal co-algebras , 1995, Mathematical Structures in Computer Science.

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

[36]  G. C. Wraith A Note on Categorical Datatypes , 1989, Category Theory and Computer Science.

[37]  Giuseppe Castagna,et al.  A Calculus for Overloaded Functions with Subtyping , 1995, Inf. Comput..

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

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

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

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

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

[43]  Luca Cardelli,et al.  A semantic basis for quest , 1990, Journal of Functional Programming.

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

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

[46]  Martin Hofmann,et al.  Positive subtyping , 1995, POPL '95.

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

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