Predicate Dispatching: A Unified Theory of Dispatch
Published in ECOOP '98,
the 12th European Conference on Object-Oriented Programming,
Brussels, Belgium, July 20-24, 1998, pp. 186-211
Michael D. Ernst,
Craig Kaplan, and
Craig Chambers
Predicate dispatching generalizes previous method dispatch
mechanisms by permitting arbitrary predicates to control method
applicability and by using logical implication between predicates as the
overriding relationship. The method selected to handle a message send can
depend not just on the classes of the arguments, as in ordinary
object-oriented dispatch, but also on the classes of subcomponents, on an
argument's state, and on relationships between objects. This simple
mechanism subsumes and extends object-oriented single and multiple
dispatch, ML-style pattern matching, predicate classes, and classifiers,
which can all be regarded as syntactic sugar for predicate dispatching.
This paper introduces predicate dispatching, gives motivating examples, and
presents its static and dynamic semantics.
An implementation of predicate dispatching is available.
The PostScript file is available
here.
An implementation in Java is also available: get the distribution
or browse the
manual.
Cecil/Vortex
Project