【问题标题】:Lisp DO variable syntax reasoningLisp DO 变量语法推理
【发布时间】: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)))

我确定有充分的理由,但我还不明白。

【问题讨论】:

    标签: syntax lisp let do-loops


    【解决方案1】:

    因为它既方便又节省缩进。此外,累加器在概念上属于循环,那为什么不放在那里呢?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多