Multiple Dispatch as Dispatch on Tuples

Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 1998), Vancouver, British Columbia, Canada, October 18-22, 1998.
Gary Leavens, Todd Millstein
Many popular object-oriented programming languages, such as C++, Smalltalk-80, Java, and Eiffel, do not support multiple dispatch. Yet without multiple dispatch, programmers find it difficult to express binary methods and design patterns such as the "visitor" pattern. We describe a new, simple, and orthogonal way to add multimethods to single-dispatch object-oriented languages, without affecting existing code. The new mechanism also clarifies many differences between single and multiple dispatch.

[PDF]