fare-matcher
fare-matcher extends CL with ML-like pattern matching in an extensible way.

fare-matcher is superseded by optima. It is very easy to migrate from fare-matcher to optima, and we recommend you stop using fare-matcher and adopt optima instead.

fare-matcher was written by Fare Rideau. It extends CL with pattern matching much like ML or Erlang, but in a way well integrated with CL, and with the possibility of extending the core matcher with arbitrary primitives.

It also includes a matching-friendly implementation of quasiquote, which makes it possible to match source code in an easy way. To use it, you may need to (eval-when (:compile-toplevel :load-toplevel :execute) (fare-quasiquote::enable-quasiquote)).

It depends on fare-utils.

There is a little documentation at fare-matcher-docs.

fare-matcher source code is at: http://common-lisp.net/gitweb?p=users/frideau/fare-matcher.git

ASDF-install package (obsolete) http://common-lisp.net/gitweb?p=users/frideau/fare-matcher.git;a=snapshot;h=master;sf=tgz

Variants:

  • Thomas F. Burdick distributes this package under a modern BSD license: fare-relicensed. I (Fare Rideau) hope my disclaimer makes it unnecessary, now.
  • Matthew Danish has some extensions and clean-ups, packaged with an ASDF system, here. It has since been merged with the upstream version (2005-01-31).
  • Note that a different pattern matcher with a similar syntax is part of the bese tools as used in UCW.