(defun drev1 (a b)
 (cond ((null (cdr b)) (rplacd a 'nil) (nconc b a))
       (t (rplacd a 'nil) (nconc (drev1 b (cdr b)) a))))


(defun drev (l)
 (drev1 'nil l))


(defun atoms (l)
 (cond ((atom l) (list l))
       ((null (cdr l)) (atoms (car l)))
       (t (sort (unionq (atoms (car l)) (atoms (cdr l)))))))


(defun conses (l)
 (cond ((atom l) 0)
       ((plus 1 (conses (car l)) (conses (cdr l))))))


(defun deep-member (s1 s2)
 (cond ((equal s1 s2))
       ((or (atom s2) (null s2)) nil)
       ((or (deep-member s1 (car s2)) (deep-member s1 (cdr s2))))))


(defun rev (l)
 (cond ((null l) nil)
       (t (nconc (rev (cdr l)) (list (car l))))))



(defun sort (l) l)
