The first subject of this chapter is the pattern-matching library, core.match
. Pattern matching in computer languages is a method by which a given sequence of tokens is checked for the presence of specific markers of a pattern (which is typically either a sequence or a tree of some sort). The technique has a somewhat storied history going all the way back to the SNOBOL language (1962), with the first tree-based, pattern-matching features being introduced in an extension of LISP in 1970.
Pattern matching has a number of different practical uses, from search-and-replace algorithms and other low-level regular expression logic to general tree-based data processing. The particular pattern-matching algorithm used by both Clojure and ClojureScript's implementations in core.match
is an implementation of an algorithm described in Luc Maranget's paper, Compiling Pattern Matching to Good Decision Trees.