У меня есть задание для класса, специально проверяющее наше понимание do, с просьбой определить функцию для создания минимума списка чисел. Нас также просят использовать для этого вторичную функцию («поменьше»).
У меня нет предыдущего опыта кодирования, и я вынужден оставаться в пределах границ do; Я читал по этому вопросу столько, сколько могу, но почти все, что я нахожу, просто предлагает использовать другие методы (do *, COND, et c.).
Я определил простое «меньшее» как:
(defun smaller (x y)
(if (< x y) x y))
Затем я подошел к проблеме следующим образом:
(defun minimum (lst)
"(lst)
Returns the minimum of a list of numbers."
(do ((numbers lst (cdr numbers))
(min (car numbers) (smaller min (cadr numbers))))
((null numbers) min)))
Я чувствую, что есть проблема, когда «меньшее» msgstr "функция не может быть применена к первой l oop (обратная связь была бы отличной), в противном случае моя непосредственная проблема - ошибка" UNBOUND-VARIABLE "для переменной" NUMBERS ". Я не уверен, какая «область» вызывает путаницу: если я плохо отформатировал файл do l oop полностью, или один из второго / третьего / et c. «цифры» вызывает проблему.
Может ли кто-нибудь дать отзыв? - снова имея в виду, что мы ограничены только простыми циклами do и что у меня определенно нет полного понимания того, что у меня уже получилось.
Заранее большое спасибо.