Predicate dispatch explained

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.

External links

Notes and References

  1. Millstein . T. . Practical Predicate Dispatch . OOPSLA '05 .
  2. Millstein . T. . Frost . C. . Ryder . J. . Warth . A. . Expressive and modular predicate dispatch for Java . 10.1145/1462166.1462168 . ACM Transactions on Programming Languages and Systems . 31 . 2 . 1 . 2009 . 10.1.1.212.4268 . 2150617 .
  3. Web site: class Signature . 2020-07-07 .
  4. Web site: [ftp://publications.ai.mit.edu/ai-publications/2001/AITR-2001-006.pdf Predicate Dispatching in Common Lisp Object System ].
  5. Web site: pcostanza/filtered-functions. GitHub. 2016-04-07.