Predicate dispatch
| Polymorphism |
|---|
| Ad hoc polymorphism |
| Parametric polymorphism |
| Subtyping |
In computer programming, predicate dispatch is a generalisation of multiple dispatch ("multimethods") that allows the method to call to be selected at runtime based on arbitrary decidable logical predicates and/or pattern matching attached to a method declaration.[1] [2]
Raku supports predicate dispatch using "where" clauses that can execute arbitrary code against any function or method parameter.[3]
Julia has a package for it with PatternDispatch.jl but otherwise natively supports multiple dispatch.
Experimental implementations have been created for Common LISP,[4] [5] and for Java (JPred[2] ).
It allows open extension of previously declared methods at a fine-grained level, but multiple extensions with identical or overlapping predicates created by different developers may interfere with each other in unanticipated ways. In this respect it is similar to aspect-oriented programming.
References
[edit ]- ^ Millstein, T. Practical Predicate Dispatch (PDF). OOPSLA '05.
- ^ a b Millstein, T.; Frost, C.; Ryder, J.; Warth, A. (2009). "Expressive and modular predicate dispatch for Java". ACM Transactions on Programming Languages and Systems. 31 (2): 1. CiteSeerX 10.1.1.212.4268 . doi:10.1145/1462166.1462168. S2CID 2150617.
- ^ "class Signature" . Retrieved 2020年07月07日.
- ^ "Predicate Dispatching in Common Lisp Object System" (PDF). publications.ai.mit.edu (FTP). (To view documents see Help:FTP)
- ^ "pcostanza/filtered-functions". GitHub. Retrieved 2016年04月07日.
External links
[edit ]
This computer-programming-related article is a stub. You can help Wikipedia by expanding it.