如何在Common Lisp中附加工作?

adr*_*anp 5 lisp common-lisp

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

(setf y (loop for x in y
              for z = (something)
              unless (condition for z)
              append z))
Run Code Online (Sandbox Code Playgroud)

z附加在哪里?

hua*_*uan 10

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

(loop ... append z into result finally (return result))
Run Code Online (Sandbox Code Playgroud)

append是一个循环关键字; 它与append函数无关,除了共享相同的名称---所以它是循环宏决定它是如何工作的,而不是append函数.