(defun node-equal (a b) (equal a b)) (defun node-member (n path) (cond ((null path) nil) ((node-equal n (car path)) path) (t (node-member n (cdr path))))) (defun node-remove (a l) (cond ((null l) nil) ((node-equal a (car l)) (node-remove a (cdr l))) (t (cons (car l) (node-remove a (cdr l)))))) (defun node-union (a b) (cond ((null a) b) ((node-member (car a) b) (node-union (cdr a) b)) (t (cons (car a) (node-union (cdr a) b)))))ノードがシンボルではなく,リストや集合で表される場合に この基本関数のnode-equalを変更するだけですむようにする.