【发布时间】:2014-11-28 14:24:27
【问题描述】:
这是一个函数,它询问一个数字,如果它的类型确实是一个数字,则返回该值,否则再次执行该函数:
(defun ask-number ()
(format t "Please enter a number.~%")
(let ((val (read)))
(if (numberp val)
val
(ask-number))))
据我了解,读取该值后,将其标记为val,整个((val (read))) 是let 的参数。我不明白的是,为什么 if 语句嵌套在 let 中。我会假设程序应该是这样的:
(defun ask-number ()
(format t "Please enter a number.~%")
(let ((val (read))))
(if (numberp val)
val
(ask-number)))
这会导致错误。我不确定为什么会这样。
【问题讨论】:
标签: lisp common-lisp let