Name: Anonymous 2007-04-30 19:59 ID:r8m60tso
ignore my shit code..
(defun match (template expression &optional bindings)
(defun match (template expression &optional bindings)
(cond ((atom expression)(cond ((atom template)(if (equal expression template)(values t bindings)))((unknownp template)(let ((new-binding (cons (unknown-variable template) expression)))(unless (a-list-conflictsp new-binding bindings)(values t (cons new-binding bindings)))))))((consp template)(multiple-value-bind (a-success a-bindings)(match (car template) (car expression) bindings)(if a-success(multiple-value-bind (d-success d-bindings)(match (cdr template) (cdr expression) a-bindings)(if d-success(values t d-bindings))))))))