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.

Predicate dispatch

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

Predicate dispatch

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

Predicate dispatch

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

External links

C2 wiki: Predicate dispatching

Method (computer programming) Polymorphism (computer science)