Lesson plan

Predicate dispatch

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.

Back to article

Article summary

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.

Key claims

No claims recorded.

Discussion questions

  1. Summarise the article in your own words. Which single claim would you verify first, and why?
  2. Which claim in this article is most likely to be revised as the sources update? How would you check its current status?
  3. If two sources disagreed about one of these facts, what would you need in order to trust one over the other?

Bibliography

No sources recorded.

Key claims and bibliography are generated from the same tracked claims and sources as the article page.