Prototypes with Multiple Dispatch: An Expressive and Dynamic Object Model

  • Lee Salzman
  • Jonathan Aldrich
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3586)


Two object-oriented programming language paradigms—dynamic, prototype-based languages and multi-method languages—provide orthogonal benefits to software engineers. These two paradigms appear to be in conflict, however, preventing engineers from realizing the benefits of both technologies in one system. This paper introduces a novel object model, prototypes with multiple dispatch (PMD), which seamlessly unifies these two approaches. We give formal semantics for PMD, and discuss implementation and experience with PMD in the dynamically typed programming language Slate.


Object Representation Applicable Method Cache Scheme Argument Position Method Invocation 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Abadi, M., Cardelli, L.: A Theory of Objects. Springer, Heidelberg (1996)zbMATHGoogle Scholar
  2. 2.
    Bobrow, D.G., DiMichiel, L.G., Gabriel, R.P., Keene, S.E., Kiczales, G., Moon, D.A.: Common Lisp Object System Specification. In: SIGPLAN Notices, september 1988, vol. 23 (1988)Google Scholar
  3. 3.
    Bono, V., Fisher, K.: An Imperative, First-Order Calculus with Object Extension. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, p. 462. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  4. 4.
    Castagna, G., Ghelli, G., Longo, G.: A Calculus for Overloaded Functions with Subtyping. In: Lisp and Functional Programming (1992)Google Scholar
  5. 5.
    Chambers, C.: Object-Oriented Multi-Methods in Cecil. In: Lehrmann Madsen, O. (ed.) ECOOP 1992. LNCS, vol. 615, pp. 33–56. Springer, Heidelberg (1992)CrossRefGoogle Scholar
  6. 6.
    Chambers, C.: Predicate Classes. In: Nierstrasz, O. (ed.) ECOOP 1993. LNCS, vol. 707, pp. 268–296. Springer, Heidelberg (1993)CrossRefGoogle Scholar
  7. 7.
    Drossopoulou, S., Damiani, F., Dezani-Ciancaglini, M., Giannini, P.: More Dynamic Object Reclassification: Fickle II. Transactions on Programming Languages and Systems 24(2), 153–191 (2002)CrossRefGoogle Scholar
  8. 8.
    Ernst, M.D., Kaplan, C.S., Chambers, C.: Predicate Dispatching: A Unified Theory of Dispatch. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, p. 186. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  9. 9.
    Feinberg, N., Keene, S.E., Mathews, R.O., Withington, P.T.: Dylan Programming. Addison-Wesley, Reading (1997)zbMATHGoogle Scholar
  10. 10.
    Fisher, K., Honsell, F., Mitchell, J.C.: A Lambda Calculus of Objects and Method Specialization. Nordic Journal of Computing 1(1), 3–37 (1994)zbMATHMathSciNetGoogle Scholar
  11. 11.
    Goldberg, A., Robson., D.: Smalltalk-80: The Language. Addison-Wesley, Reading (1989)zbMATHGoogle Scholar
  12. 12.
    Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An Overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, p. 327. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  13. 13.
    Millstein, T.: Practical Predicate Dispatch. In: Object-Oriented Programming Systems, Languages, and Applications (2004)Google Scholar
  14. 14.
    Millstein, T., Chambers, C.: Modular Statically Typed Multimethods. Information and Computation 175(1), 76–118 (2002)zbMATHCrossRefMathSciNetGoogle Scholar
  15. 15.
    Milner, R., Tofte, M., Harper, R., MacQueen, D.: The Definition of Standard ML (Revised). MIT Press, Cambridge (1997)Google Scholar
  16. 16.
    Rice, B., Salzman, L.: The Slate Programmer’s Reference Manual (2004), Available at,
  17. 17.
    Ungar, D., Smith, R.B.: Self: The Power of Simplicity. In: Object-Oriented Programming Systems, Languages, and Applications, pp. 227–242. ACM Press, New York (1987)Google Scholar
  18. 18.
    Ungar, D., Smith, R.B.: A Simple and Unifying Approach to Subjective Objects. Theory and Practice of Object Systems 2(3), 161–178 (1996)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Lee Salzman
    • 1
  • Jonathan Aldrich
    • 1
  1. 1.Carnegie Mellon UniversityPittsburghUSA

Personalised recommendations