Lisp DO 变量语法推理
Posted
技术标签:
【中文标题】Lisp DO 变量语法推理【英文标题】:Lisp DO variable syntax reasoning 【发布时间】:2010-09-19 21:02:06 【问题描述】:在 Peter Seibel 的 Practical Common Lisp 中,他给出了这个例子:
(do ((nums nil) (i 1 (1+ i)))
((> i 10) (nreverse nums))
(push i nums))
我可以看到它是如何工作的,在循环中使用 nums 但不给它一个 step-form。为什么要将 nums 放在变量定义中而不是这样做:
(let (nums) (do ((i 1 (+ i 1)))
((> i 10) (nreverse nums))
(push i nums)))
我确定有充分的理由,但我还不明白。
【问题讨论】:
【参考方案1】:因为它既方便又节省缩进。此外,累加器在概念上属于循环,那为什么不放在那里呢?
【讨论】:
以上是关于Lisp DO 变量语法推理的主要内容,如果未能解决你的问题,请参考以下文章