#loops #lisp #common-lisp #undefined-function
#циклы #lisp #common-lisp #неопределенная функция
Вопрос:
Нужно написать программу, которая запрашивает у пользователя ввод, пока он не введет 0. Затем необходимо вывести минимальное значение для числа, которое было введено. Я новичок в lisp, и я продолжаю получать неопределенную функцию A в консоли, но a является переменной в коде.
(defun find_min ( x y )
(if(< x y)
( x 0)
( y 0)))
(defun minOfNums()
(loop
(princ "Enter number: ")
(setq a (read))
(princ "Enter number: ")
(setq min (find_min (a (read))))
(terpri)
(when (= a 0) (return a)))
(write min))
(minOfNums)
Комментарии:
1. что привело вас к добавлению нуля к x и y в первой функции? почему вы делаете цикл? также обратите внимание, что
min
неопределенная, вы должны ввести переменную сlet
привязкой, вероятно2. Переменные a и min не определены. (a …) — это вызов функции, где функция не определена. Вывод может быть буферизован, поэтому печати и последующего чтения в целом недостаточно.
Ответ №1:
В (setq min (find_min (a (read))))
вы вызываете функцию a
с результатом чтения объекта от пользователя. Это должно (вероятно) быть (setq min (find_min a (read)))
вместо этого.
Если ничего другого, find_min
функция ожидает два аргумента, а написанный код передает только один.