2 つのリストの共通要素を新しいリストに入れるプログラムを Lisp で書いていました。これが私のコードです。
(defun test (a b)
(let ((alist nil) (blist nil))
(progn
(join a b alist blist)
(print blist))))
(defun join (a b alist blist)
(cond
((and (null a) (null b))
(setf blist (cons alist blist)))
((equal (car a) (car b))
(setf alist (cons (list (car a) (car b)) alist)))
(t (join (cdr a) (cdr b) alist blist))))
しかし、関数の出力は常にnil
. 次に、インターネットで何かを調べたところ、 を使用しようとするsetf
と、元のリストではなく、新しいリストを指していることがわかりました。を使用できない場合setf
、これを実装するために他に何が使用できますか?