CommonLisp : member関数の定義。atom, car で再帰の条件を

CommonLisp : member関数の定義。atom, car で再帰の条件を
トップレベルに一致する要素があるか調べる。 member関数

(defun mymember (x y)
	   (cond (( null y) nil)
		 ((atom (car y)) (if (eql x (car y)) (car y) (mymember x (cdr y))))
		 ( (mymember x (cdr y)))))(上だと無駄が多い。修正)(defun mymember (x y)
		(cond ((null y) nil)
		      ((eql x (car y)) (car y))
		      (t ( mymember x (cdr y))

このようなコードがもともと書けなかった理由としては、
atom を 判定するのに、atom 関数にこだわりすぎた。
car を使っても、atom の判定には十分。