(defun cdr (x) (cdr x))
-(defun first (x) (car x))
-(defun second (x) (cadr x))
-(defun third (x) (caddr x))
-(defun fourth (x) (cadddr x))
-(defun rest (x) (cdr x))
+(defun first (x) (car x))
+(defun second (x) (cadr x))
+(defun third (x) (caddr x))
+(defun fourth (x) (cadddr x))
+(defun fifth (x) (car (cddddr x)))
+(defun sixth (x) (cadr (cddddr x)))
+(defun seventh (x) (caddr (cddddr x)))
+(defun eighth (x) (cadddr (cddddr x)))
+(defun ninth (x) (car (cddddr (cddddr x))))
+(defun tenth (x) (cadr (cddddr (cddddr x))))
+(defun rest (x) (cdr x))
(defun list (&rest args)
args)
(copy-tree (cdr tree)))
tree))
+(defun tree-equal (tree1 tree2 &key (test #'eql))
+ (if (atom tree1)
+ (and (atom tree2) (funcall test tree1 tree2))
+ (and (consp tree2)
+ (tree-equal (car tree1) (car tree2) :test test)
+ (tree-equal (cdr tree1) (cdr tree2) :test test))))
+
(defun subst (new old tree &key (key #'identity) (test #'eql))
(cond
((funcall test (funcall key tree) (funcall key old))