我刚开始学习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
函数.