Abstract:
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.
Citations
|
1415
|
The Definition of Standard ML
– Milner, Tofte, et al.
- 1990
|
|
293
|
Pizza into Java: Translating theory into practice
– Odersky, Wadler
- 1997
|
|
147
|
Object-oriented multi-methods in Cecil
– Chambers
|
|
112
|
Predicate classes
– Chambers
- 1993
|
|
104
|
Views: A way for pattern matching to cohabit with data abstraction
– WADLER
- 1987
|
|
94
|
Typechecking and modules for multi-methods
– Chambers, Leavens
- 1995
|
|
75
|
Report on the Programming Language Haskell, Version 1.0. Unpublished manual
– Hudak, Wadler, et al.
- 1990
|
|
73
|
Common LISP: The Language
– Jr
- 1984
|
|
49
|
Optimizing multi-method dispatch using compressed dispatch tables
– Amiel, Gruber, et al.
- 1994
|
|
48
|
Multi-methods in a statically-typed programming language
– Mugridge, Hamer, et al.
- 1991
|
|
43
|
Commonloops: Merging lisp and object-oriented programming
– Bobrow, Kahn, et al.
|
|
23
|
Efficient dynamic lookup strategy for multi-methods
– Chen, Turau, et al.
- 1994
|
|
13
|
Polymorphic unification and ML typing
– Kanellakis, Mitchell
- 1989
|
|
7
|
Integrating functional and object-oriented programming
– Hosking, Hamer, et al.
- 1990
|
|
2
|
A method for integrating classification within an object-oriented environment
– Hamer, Hosking, et al.
- 1990
|
|
1
|
186 Cha93b. Craig Chambers. Predicate classes
– Rodriguez
- 1993
|