1

リストから項目を削除する関数を Common Lisp で作成しようとしています。これまでに書いたものは次のとおりです。

(defun aux-remove-fio (lst toremove)
   (if (equal (first lst) toremove)
       (pop lst)
       (aux-remove-fio (rest lst) toremove))))

関数をテストすると、結果は次のようになります。

CG-USER(49): a3
((1 (1 . 1) (1 . 2)) (2 (2 . 1) (1 . 2)))
CG-USER(50): (pop a3)
(1 (1 . 1) (1 . 2))
CG-USER(51): a3
((2 (2 . 1) (1 . 2)))
CG-USER(52): (setf a3 '((1 (1 . 1) (1 . 2)) (2 (2 . 1) (1 . 2))))
((1 (1 . 1) (1 . 2)) (2 (2 . 1) (1 . 2)))
CG-USER(53): (aux-remove-fio a3 '(1 (1 . 1) (1 . 2)))
(1 (1 . 1) (1 . 2))
CG-USER(54): a3
((1 (1 . 1) (1 . 2)) (2 (2 . 1) (1 . 2)))

私の機能が機能しない理由を誰か説明できますか?

4

2 に答える 2