我刚刚开始学习Lisp,我似乎不理解下面这段代码:
(setf y (loop for x in y
for z = (something)
unless (condition for z)
append z))
z 附加在哪里?
答案 0 :(得分:10)
它附加到循环终止时要返回的未命名列表。作为第一个近似值,您可以将其视为
的简写(loop ... append z into result finally (return result))
append
这里是循环关键字;除了共享相同的名称外,它与append
函数无关 - 因此loop宏决定了它的工作原理,而不是append
函数。