Hi Doug: The abstract says: ---------- 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. ---------- That sounds familiar to me. In Adaptive Programming, when we have a call o.f() where f is an adaptive method, the f which will be selected depends on the relationships between the subobjects of o. One difference is that we have an infinite store of f's to choose from based on the strategy which sits in f. In Cecil, I guess, the programmer has to write the f's to choose from explicitly. An interesting connection, it looks like. -- Karl ============================ From dougo@ccs.neu.edu Thu Jan 15 15:59:06 1998 From: Doug Orleans To: pl-seminar@ccs.neu.edu Subject: Re: Paper on constraint-based polymorphic type system in Cecil Also of note are these two papers (the first of which I might even be coerced into presenting at the seminar later this quarter): http://www.cs.washington.edu/research/projects/cecil/www/Papers/gud.html Predicate Dispatching: A Unified Theory of Dispatch University of Washington technical report UW-CSE-98-01-02, January 12, 1998 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 adapted from a prototype implementation, and presents its static and dynamic semantics.