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 の判定には十分。