【发布时间】:2013-12-12 22:14:17
【问题描述】:
在 lisp 中我有一个小问题要理解
我有这个代码:
(defun iota-b (n)
(do ((x 0 (+1 x))
(u '() (cons x u)))
((> x n) (nreverse u))))
(iota-b 5)
(0 1 2 3 4 5)
在文档中有“do”的基本模板是:
(do (variable-definitions*)
(end-test-form result-form*)
statement*)
我真的不明白我的身体在我的函数 iota-b 中的什么位置 对我来说是
(u '() (cons x u)))
显然不是,为什么我们将 (u '() (cons x u))) 放在变量定义中?
【问题讨论】:
-
正确的缩进会暗示这个问题。我建议不要对此进行编辑,因为原始缩进清楚地表明了问题的根源。
-
与括号搏斗比向魔鬼屈服并做
(loop for x to 3 collect x)更Lispy吗?
标签: syntax lisp common-lisp do-loops