Note: This is taken from the Chicken Wiki, where a more recent version could be available.
Matchable is a drop-in compatible replacement for Chicken's MATCH macro. All forms are provided under the same name, and all features except the ..k pattern are supported.
In addition, matchable supports non-linear patterns, i.e. patterns where an identifier occurs multiple times, requiring all instances of the identifier to be EQUAL?. For example:
(x _ x)
matches all lists of three elements whose first and third elements are the same.
For full documentation, see Pattern matching. However, the match-error-control and match-error-procedure procedures have no impact. A failure to match always signals an error.
Any syntax-rules implementation, such as syntax-case, syntactic-closures, riaxpander or alexpander.
public domain
http://www.call-with-current-continuation.org/eggs/atchable.egg