(defun node-equal (a b) (set= a b :test #'equal)) (defun set< (a b &key (test #'eq)) (cond ((null a) t) ((member (car a) b :test test) (set< (cdr a) b :test test)) (t nil))) (defun set= (a b &key (test #'eq)) (and (set< a b :test test) (set< b a :test test)))という具合にmemberの:testを用いて,set=を定義すればよい.
>(node-equal '((a on b) (c on table) (b on table)) '((c on table) (b on table) (a on b)))