Modular Statically Typed Multimethods

Information and Computation, 175(1):76-118, May 2002 © Academic Press.

An earlier version of this paper appeared in the Proceedings of the Thirteenth European Conference on Object-Oriented Programming (ECOOP 99), Lisbon, Portugal, June 14-18, 1999. Springer-Verlag LNCS 1628, June 1999, pp. 279-303.

An even earlier version of this paper appeared in the Sixth International Workshop on Foundations of Object-Oriented Languages (FOOL 6), San Antonio, Texas, January 23, 1999.

Todd Millstein and Craig Chambers
Multimethods offer several well-known advantages over the single dispatching of conventional object-oriented languages, including a simple solution to the "binary method" problem, cleaner implementations of the "visitor," "strategy," and similar design patterns, and a form of "open objects." However, previous work on statically typed multimethods whose arguments are treated symmetrically has required the whole program to be available in order to perform typechecking. We describe Dubious, a simple core language including first-class generic functions with symmetric multimethods, a classless object model, and modules that can be separately typechecked. We identify two sets of restrictions that ensure modular type safety for Dubious as well as an interesting intermediate point between these two. We have proved each of these modular type systems sound.

To get the conference version of the paper, click here.

To get the journal version of the paper, which includes the formal semantics of the Dubious language, click here.

Cecil/Vortex Project