Я дал возможность написать функцию в общем lisp, чтобы сравнить два списка, чтобы убедиться, что они равны, и мне было отказано в использовании «равных», Предикат Я могу использовать только «eq», и я, кажется, прихожу к стене. Я получаю эту ошибку с моим кодом EVAL: переменная SETF не имеет значения следующие перезагружается доступны: и он код:Настройка равной функции в общем lisp с использованием только «eq»
(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))))))
Вы бы отделили код? Существует кнопка, которая позволяет вставить четыре пробела перед блоком кода, который затем будет показан как предварительно отформатированный блок. – koddo
также: x и y нигде не определены, каковы они? Проверьте синтаксис COND и посмотрите свой код с отступом - соответствует ли он синтаксису? Какова цель функций B и CHECK? Что должен делать Б? Что проверяет CHECK? –