Я дал задание написать функцию на общем лиспе для сравнения двух списков, чтобы увидеть, равны ли они, и я был лишен возможности использовать предикат «равно», я могу использовать только «eq», и я, кажется, упираюсь в стену . Я получаю эту ошибку с моим кодом EVAL: переменная SETF не имеет значения Доступны следующие перезапуски: и код:
(defun check(L1 L2)
(cond
((eq L nil) nil)
(setq x (first L1))
(setq y (first L2))
(setf L1 (rest L1))
(setf L2 (rest L2))
(if (eq x y) (check L1 L2))))
(defun b(L1 L2)
(cond
((eq L1 nil) nil)
(setf x (first L1))
(setf y (first L2))
(setf L1 (rest L1))
(setf L2 (rest L2))
(if (and (list x) (list y)
(check(x y))
(if (eq x y) (b(L1 L2))))))