首页 > 解决方案 > 哪个更惯用:dotimes vs loop repeat?

问题描述

这些代码示例中哪一个更符合 Common Lisp 的习惯?

(dotimes (_ 10) (write-line "Hello"))

或者

(loop repeat 10 do (write-line "Hello"))

或者,在 Common Lisp 中没有首选的迭代循环方式,我们应该只使用我们喜欢的方式?

标签: loopscommon-lisp

解决方案


没关系。使用任何一个。

您还可以添加自己的控制运算符:

(defmacro repeat (n &body body)
  `(loop repeat ,n do (progn ,@body)))

然后使用它:

CL-USER 52 > (repeat 10
               (write-line "hello")
               (write-line "world"))
hello
world
hello
world
...
world
hello
world
NIL

推荐阅读