Filtered dispatch

Predicate dispatching is a generalized form of dynamic dispatch, which has strong limitations when arbitrary predicates of the underlying base language are used. Unlike classes, which enforce subset relationships between their sets of instances, arbitrary predicates generally do not designate subsets of each other, so methods whose applicability is based on predicates cannot be ordered according to their specificity in the general case. This paper introduces a decidable but expressive alternative mechanism called filtered dispatch that adds a simple preprocessing step before the actual method dispatch is performed and thus enables the use of arbitrary predicates for selecting and applying methods.

[1]  Cyril S. Ku,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[2]  Gary T. Leavens,et al.  MultiJava: modular open classes and symmetric multiple dispatch for Java , 2000, OOPSLA '00.

[3]  Colette Rolland,et al.  Object-Oriented Information Systems : 8th International Conference, OOIS 2002, Montpellier, France, September 2-5, 2002 : proceedings , 2002 .

[4]  Craig S. Kaplan,et al.  Predicate Dispatching: A Unified Theory of Dispatch , 1998, ECOOP.

[5]  Christophe Rhodes,et al.  Custom Specializers in Object-Oriented Lisp , 2008, J. Univers. Comput. Sci..

[6]  Daniel G. Bobrow,et al.  Common lisp object system specification , 1988, SIGP.

[7]  Pascal Costanza,et al.  Dynamically scoped functions as the essence of AOP , 2003, SIGP.

[8]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[9]  Victor Luchangco,et al.  Modular multiple dispatch with multiple inheritance , 2007, SAC '07.

[10]  Robert Hirschfeld,et al.  Language constructs for context-oriented programming: an overview of ContextL , 2005, DLS '05.

[11]  Christophe Dony,et al.  Split objects: a disciplined use of delegation within objects , 1996, OOPSLA '96.

[12]  Robert Hirschfeld,et al.  Language Constructs for Context-oriented Programming , 2005 .

[13]  Pascal Costanza How to Make Lisp More Special , 2005 .

[14]  Sophia Drossopoulou,et al.  Fickle : Dynamic Object Re-classification , 2001, ECOOP.

[15]  Craig Chambers,et al.  Efficient multiple and predicated dispatching , 1999, OOPSLA '99.

[16]  Craig Chambers,et al.  Predicate Classes , 1993, ECOOP.

[17]  Ben Wegbreit,et al.  The treatment of data types in EL1 , 1974, CACM.

[18]  Henry Lieberman,et al.  Using prototypical objects to implement shared behavior in object-oriented systems , 1986, OOPLSA '86.

[19]  Andrew Shalit,et al.  The Dylan Reference Manual , 1996 .

[20]  Todd D. Millstein,et al.  Practical predicate dispatch , 2004, OOPSLA.

[21]  D. Janaki Ram,et al.  Object Schizophrenia Problem in Object Role System Design , 2002, OOIS.

[22]  Aaron Mark Ucko Predicate Dispatching in the Common Lisp Object System , 2001 .

[23]  Randall B. Smith,et al.  SELF: The power of simplicity , 1987, OOPSLA '87.

[24]  Pascal Costanza,et al.  Dynamic Replacement of Active Objects in the Gilgul Programming Language , 2002, Component Deployment.

[25]  Henry Lieberman,et al.  Using Prototypical Objects to Implement Shared Behavior in Object Oriented Systems , 1986, OOPSLA.

[26]  Theo D'Hondt,et al.  Reflection for the Masses , 2008, S3.

[27]  John G. Hosking,et al.  Multi-Methods in a Statically-Typed Programming Language , 1991, ECOOP.

[28]  Christopher G. Lasater,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.