A static type system for message passing

Much research has been performed with the aim of isolating the basic notions of object-oriented languages and of describing them by basic operators which can be embedded in strongly-typed languages. In this context we define an atomic linguistic construct to capture the notion of message passing, and we define a static and strong type system, based on subtyping, for this construct. Message passing is modelled as the application of an overloaded function, whose behavior is determined only at compile-time on the basis of the class which created a distinguished argument, the object “receiving” the message. By embedding this mechanism in a strongly-typed language with subtyping and abstract data types we can obtain the full functionality of object-oriented languages. We show that this approach is strictly more expressive then the usual interpretation of message passing as selection plus application of a functional record field.

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

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

[3]  John C. Reynolds Conjunctive Types and Algol-like Languages , 1987, LICS.

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

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

[6]  Giorgio Ghelli,et al.  Modelling Features of Object-Oriented Languages in Second Order Functional Languages with Subtypes , 1990, REX Workshop.

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

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

[9]  Kim B. Bruce,et al.  A Modest Model of Records, Inheritance and Bounded Quantification , 1990, Inf. Comput..

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

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

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

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

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

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