<cl> (eq '(a b c) '(a b c)) NIL <cl> (equal '(a b c) '(a b c)) T <cl> (setq a '(a b) b '(a b)) (A B) <cl> a (A B) <cl> b (A B) <cl> (eq a b) NIL <cl> (tree-equal a b) Ttree-equalの処理は,与えられたデータを分解して等号を調べ,分解さ れたデータに対してすべて等号が成り立つならば最終的な結果も等号がなりた つというプロセスになります.
(defun tree-equal (a b) (cond ((or (atom a) (atom b)) (eql a b)) (t (and (tree-equal (first a) (first b)) (tree-equal (rest a) (rest b))))))というように再帰的に定義できます. リストを返す通常の関数は,コンスをひとつ以上作って引数データをそのコン スから継れた形で作ります.