Tree Equality
It often is necessary to test whether two trees are equal, even though they are in different memory locations. We will say two trees are equal if:
(defun equal (pat inp) (if (consp pat) ; interior node? (and (consp inp) (equal (first pat) (first inp)) (equal (rest pat) (rest inp))) (eql pat inp) ) ) ; leaf node
>(equal '(+ a (* b c)) '(+ a (* b c))) T