Я работаю над программой Lisp, которая содержит код для чтения в размерах ящиков, а затем сортирует их от кратчайших до самых длинных (и задает каждую из этих новых длин как новые переменные).Неопределенная ошибка функции в LISP
При попытке загрузить мой файл в интерпретатор, я получаю следующее сообщение об ошибке:
*** - EVAL: undefined function NEW-D1
Я смущен, почему я получать эту ошибку, потому что new-d1
не является функцией, это переменная для длины кратчайшего края данного поля.
Вот код, где new-d1
сначала инициализируется и установить:
(defun get-box()
(let ((d1 0) (d2 0) (d3 0) (new-d1 0) (new-d2 0) (new-d3 0))
(setf d1 (read))
(setf d2 (read))
(setf d3 (read))
(if (= d1 -1)
(exit)
(progn
(setq new-d1 (first (sort (list d1 d2 d3) #'<)))
(setq new-d2 (second (sort (list d1 d2 d3) #'<)))
(setq new-d3 (third (sort (list d1 d2 d3) #'<)))
(next-part-of-program (new-d1 new-d2 new-d3))))))
Как я могу изменить свой код, интерпретатор знает новый-d1 не функция, а не рассматривать его как таковой? Спасибо за любую помощь!
Edited добавить: Следующая часть кода программы:
(defun next-part-of-program(d1 d2 d3)
(if (> d2 b)
(put-on-c-list(d1 c-list))
(if (> d2 a) and (< d2 c)
(put-on-b-list (d1 b-list))
(put-on-a-list (d1 a-list)))))
Примечание: Я инициировало-лист, б-лист, и с-список ранее как глобальные переменные/списки, которые будут добавлены позже ,
Еще раз спасибо!
Когда я бегу вашей функции, я получаю другую ошибку: функция 'next-part-of-program' не определена. Символ 'new-d1' не используется как funtion в приведенном выше коде. Пожалуйста, обновите свой вопрос с фактическим кодом, который вызывает ошибку. – Kaz
Возможно, что у вас определенная функция 'next-part-of-program', и это место, где' new-d1' вызывается или иным образом используется как функция. – Kaz
Спасибо; Я добавил в следующую функцию в своем коде. Является ли 'new-d1' использоваться как функция здесь или может быть даже позже в моем коде, например, в' put-on-a-list'? – user1462294