Efficient Dynamic Look-Up Strategy for Multi-Methods

In object-oriented programming languages, multiple-dispatching provides increased expressive power over single-dispatching by guiding method look-up using the values of all arguments instead of the receiver only. There have been several programming languages supporting this mechanism and they demonstrate its usefulness. However, efficient implementation of multi-methods is still critical with regard to its success as a standard. In this paper, we present a new mechanism for implementing multi-methods dynamic lookup based on automaton techniques. Analysis and experimental results show that our strategy is time and space efficient. The presented result can provide the basis for designing new object-oriented paradigms based on multi-methods.

[1]  Daniel H. H. Ingalls A simple technique for handling multiple polymorphism , 1986, OOPSLA 1986.

[2]  John G. Hosking,et al.  Multi-Methods in a Statically-Typed Programming Language , 1991, ECOOP.

[3]  Bruce G. Lindsay,et al.  Static type checking of multi-methods , 1991, OOPSLA '91.

[4]  Terry A. McKee,et al.  A fast method dispatcher for compiled languages with multiple inheritance , 1989, OOPSLA 1989.

[5]  Daniel G. Bobrow,et al.  CommonLoops: merging Lisp and object-oriented programming , 1986, OOPLSA '86.

[6]  Alfred V. Aho,et al.  The Theory of Parsing, Translation, and Compiling , 1972 .

[7]  Christophe Lécluse,et al.  Manipulation of Structured Values in Object-Oriented Databases , 1989, DBPL.

[8]  Terry A. McKee,et al.  OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications , 1989 .

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

[10]  David A. Moon,et al.  The Lisp Machine manual , 1981, SGAR.

[11]  Craig Chambers,et al.  Object-Oriented Multi-Methods in Cecil , 1992, ECOOP.

[12]  Marie-Laure Mugnier,et al.  Monotonic conflict resolution mechanisms for inheritance , 1992, OOPSLA.

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

[14]  David A. Moon,et al.  Object-oriented programming with flavors , 1986, OOPLSA '86.

[15]  Jean-Claude Royer,et al.  Optimizing method search with lookup caches and incremental coloring , 1992, OOPSLA '92.

[16]  Alexander Borgida,et al.  Efficient management of transitive relationships in large data and knowledge bases , 1989, SIGMOD '89.

[17]  Patrick H. Dussud TICLOS: an implementation of CLOS for the explorer family , 1989, OOPSLA '89.

[18]  Gregor Kiczales,et al.  Efficient method dispatch in PCL , 1990, LISP and Functional Programming.

[19]  WegnerPeter,et al.  On understanding types, data abstraction, and polymorphism , 1985 .