Misplaced Pages

Predicate dispatch

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
Technique in computer programming
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.

Raku supports predicate dispatch using "where" clauses that can execute arbitrary code against any function or method parameter.

Julia has a package for it with PatternDispatch.jl but otherwise natively supports multiple dispatch.

Experimental implementations have been created for Common LISP, and for Java (JPred).

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

  1. Millstein, T. Practical Predicate Dispatch (PDF). OOPSLA '05.
  2. ^ 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.
  3. "class Signature". Retrieved 2020-07-07.
  4. "Predicate Dispatching in Common Lisp Object System" (PDF).
  5. "pcostanza/filtered-functions". GitHub. Retrieved 2016-04-07.

External links


Stub icon

This computer-programming-related article is a stub. You can help Misplaced Pages by expanding it.

Categories: