Static typing for dynamic messages

Dynamic messages are first-class messages dynamically bound to program variables. By dynamic messages, the methods to be invoked can be varied dynamically at run-time, which provides a powerful abstraction mechanism for object-oriented languages. Dynamic messages are critically needed for some programs, but it seems that there has been no proposal of static type systems for dynamic messages. This paper presents a static typing discipline for dynamic messages and formalizes it into a second order polymorphic type system. The type system satisfies the type soundness property and has a principal type inference algorithm. The type system therefore provides a foundation for a statically typed object-oriented language enriched with polymorphic dynamic messages.

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

[2]  Adele Goldberg,et al.  SmallTalk 80: The Language , 1989 .

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

[4]  Wayne Snyder,et al.  Complete Sets of Transformations for General E-Unification , 1989, Theor. Comput. Sci..

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

[6]  Robert D. Tennent,et al.  Semantics of programming languages , 1991, Prentice Hall International Series in Computer Science.

[7]  Alexander Aiken,et al.  Soft typing with conditional types , 1994, POPL '94.

[8]  Martin Hofmann,et al.  A unifying type-theoretic framework for objects , 1994, Journal of Functional Programming.

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

[10]  Atsushi Ohori,et al.  A polymorphic record calculus and its compilation , 1995, TOPL.

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

[12]  Edward Wobber,et al.  Network objects , 1994, SOSP '93.

[13]  Carl A. Gunter Semantics of programming languages: structures and techniques , 1993, Choice Reviews Online.

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

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

[16]  Stefano Berardi,et al.  A Symmetric Lambda Calculus for Classical Program Extraction , 1994, Inf. Comput..

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

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

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

[20]  Lewis J. Pinson,et al.  Applications of Object Oriented Programming , 1990 .

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

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

[23]  Xavier Leroy,et al.  Polymorphic typing of an algorithmic language , 1992 .

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

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

[26]  Peter Buneman,et al.  OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications , 1989 .

[27]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Inf. Comput..

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