Я дал задание написать функцию в общем lisp, чтобы сравнить два списка, чтобы увидеть, равны ли они, и я обнажился от использования «равного» предиката, я могу использовать только «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))))))