append如何在CommonLisp中工作?

append如何在CommonLisp中工作?,lisp,common-lisp,Lisp,Common Lisp,我刚开始学习Lisp,似乎不理解以下代码: (setf y (loop for x in y for z = (something) unless (condition for z) append z)) 哪里追加了z?它追加到循环终止时返回的未命名列表中。作为第一近似值,您可以将其视为 (loop ... append z into result finally (return result)) appen

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

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

哪里追加了z

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

(loop ... append z into result finally (return result))

append
这里是一个循环关键字;它与
append
函数无关,除了共享相同的名称之外——因此决定它如何工作的是宏,而不是
append
函数。

每个迭代中的所有z都被追加并作为一个列表返回。。。