如何在Common Lisp中附加工作?

时间:2010-11-07 13:48:37

标签: lisp common-lisp

我刚刚开始学习Lisp,我似乎不理解下面这段代码:

(setf y (loop for x in y
              for z = (something)
              unless (condition for z)
              append z))

z 附加在哪里?

1 个答案:

答案 0 :(得分:10)

它附加到循环终止时要返回的未命名列表。作为第一个近似值,您可以将其视为

的简写
(loop ... append z into result finally (return result))

append这里是循环关键字;除了共享相同的名称外,它与append函数无关 - 因此loop宏决定了它的工作原理,而不是append函数。