Modular Statically Typed Multimethods
Information and Computation (I&C), 175(1):76-118, May 2002.
Todd Millstein, 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.
[PDF]