The Recursive Record Semantics of Objects Revisited

In a call-by-value language, representing objects as recursive records requires using an unsafe fixpoint. We design, for a core language including extensible records, a type system which rules out unsafe recursion and still supports the reconstruction of a principal type. We illustrate by means of various examples the expressive power of this language with respect to object-oriented programming constructs.

[1]  Ole Lehrmann Madsen,et al.  Virtual classes: a powerful mechanism in object-oriented programming , 1989, OOPSLA '89.

[2]  J. Palsberg Eecient Inference of Object Types , 1995 .

[3]  Matthias Felleisen,et al.  Classes and mixins , 1998, POPL '98.

[4]  Benjamin C. Pierce,et al.  A record calculus based on symmetric concatenation , 1991, POPL '91.

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

[6]  Kim B. Bruce,et al.  Subtyping Is Not a Good "Match" for Object-Oriented Languages , 1997, ECOOP.

[7]  Bertrand Meyer Genericity versus inheritance , 1986, OOPSLA 1986.

[8]  A. Snyder CommonObjects: an overview , 1986, OOPWORK '86.

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

[10]  Gilad Bracha,et al.  The programming language jigsaw: mixins, modularity and multiple inheritance , 1992 .

[11]  Peter Buneman,et al.  Theoretical Aspects of Object-Oriented Programming , 1994 .

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

[13]  Robin Milner,et al.  Principal type-schemes for functional programs , 1982, POPL '82.

[14]  Didier Rémy,et al.  Programming Objects with ML-ART, an Extension to ML with Abstract and Record Types , 1994, TACS.

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

[16]  Jens Palsberg,et al.  Type Inference with Simple Selftypes is NP-complete , 1997, Nord. J. Comput..

[17]  Davide Ancona,et al.  A theory of mixin modules: basic and derived operators , 1998, Mathematical Structures in Computer Science.

[18]  Alan Snyder Encapsulation and inheritance in object-oriented programming languages , 1986, OOPSLA 1986.

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

[20]  Didier Rémy,et al.  Typing record concatenation for free , 1992, POPL '92.

[21]  Jens Palsberg,et al.  A Denotational Semantics of Inheritance and its Correctness , 1989, OOPSLA.

[22]  Xavier Leroy The objective caml system release 3 , 2001 .

[23]  John C. Mitchell,et al.  Type Inference with Extended Pattern Matching and Subtypes , 1993, Fundamenta Informaticae.

[24]  Didier Rémy,et al.  Type inference for records in natural extension of ML , 1994 .

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

[26]  Jens Palsberg,et al.  A Denotational Semantics of Inheritance and its Correctness , 1989, OOPSLA.

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

[28]  Matthias Felleisen,et al.  A Syntactic Approach to Type Soundness , 1994, Inf. Comput..

[29]  Ole Lehrmann Madsen,et al.  Virtual classes: a powerful mechanism in object-oriented programming , 1989, OOPSLA 1989.

[30]  Mitchell Wand Type inference for objects with instance variables and inheritance , 1994 .

[31]  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.

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

[33]  William R. Cook,et al.  Mixin-based inheritance , 1990, OOPSLA/ECOOP '90.

[34]  Peter Buneman,et al.  Static type inference for parametric classes , 1989, OOPSLA '89.

[35]  Vitaly Shmatikov,et al.  A Core Calculus of Classes and Objects , 1999, MFPS.

[36]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

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

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

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

[40]  Antero Taivalsaari,et al.  On the notion of inheritance , 1996, CSUR.

[41]  Vitaly Shmatikov,et al.  A Core Calculus of Classes and Mixins , 1999, ECOOP.

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

[43]  John H. Reppy,et al.  Simple objects for Standard ML , 1996, PLDI '96.

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

[45]  P. J. Landin The Mechanical Evaluation of Expressions , 1964, Comput. J..

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

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

[48]  William R. Cook,et al.  Canning: inheritance is not subtyping , 1990 .

[49]  Didier Rémy,et al.  Objective ML: An Effective Object-Oriented Extension to ML , 1998, Theory Pract. Object Syst..

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

[51]  Scott F. Smith,et al.  An interpretation of typed OOP in a language with state , 1995, LISP Symb. Comput..

[52]  Karl Crary,et al.  What is a recursive module? , 1999, PLDI '99.