Что не так с неопределенной функцией A? (lisp)

#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 функция ожидает два аргумента, а написанный код передает только один.