From: Marco Antoniotti
Subject: ANN: Generalized UNIFIER for COMMON LISP
Date: 
Message-ID: <dFQmd.19$E26.27976@typhoon.nyu.edu>
Hi

I set up a new project on common-lisp.net

It is called CL-UNIFICATION 
(http://common-lisp.net/project/cl-unification) and it contains a 
generalized unifier for arbitrary Common Lisp data objects.  That is to say

	(unify:unify #2A((1 ?x 3) (4 2 6)) #2A((?y 2 3) (4 ?x 6)))

will "unify" and produce a substitution S such that

	(unify:find-variable-value '?x S) ==> 2
	(unify:find-variable-value '?y S) ==> 1

where the notation '?<name>' denotes - in a rather traditional way - 
"logical variables".

NUMBERs, CONSes, CLOS instances, and structures are also handled. 
Hopefully in the right way.

The code is mostly done and the documentation too.  The documentation 
does contain several broken links, but it should be usable.

The generalized unifier allows the construction of very flexible pattern 
matchers (think DESTRUCTURING-BIND on steroids) and possibly allow for 
the construction of ML-style programming idioms.

People willing to collaborate on this project are most welcome.

For the time being, please use the CVS setup to access the code. Thanks.

Enjoy
--
Marco