PLAI Typed S-Sxpression Matching

The
plai-typed/s-exp-match library provides a single
function, s-exp-match?, for checking that an S-expression has
a particular shape, where the shape is described by a pattern that is
also represented as an S-expression.

The following symbol S-expressions are treated specially within
the pattern:

`NUMBER — matches any number S-expression

`STRING — matches any string S-expression

`SYMBOL — matches any symbol S-expression

`ANY — matches any S-expression

`... — within a list S-expression, matches any
number of repetitions f the preceding S-expression within the
list; only one `... can appear as an immediate element
of a pattern list, and `... is not allowed within a
pattern outside of a list or as the first element of a list

Any other symbol in a pattern matches only itself in the
target. For example, `+ matches only `+.