2010-11-07 76 views
5

我剛開始學習Lisp和我似乎不明白下面的代碼:如何在Common Lisp中追加工作?

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

ž附加?

+2

每個迭代中的所有z都被附加並返回爲一個列表... – 2010-11-07 15:52:34

回答

10

它附加到循環終止時返回的未命名列表。作爲第一近似,你可能會認爲它是對

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

這裏的append速記是一個循環關鍵字;它與append函數無關,除了共享相同的名稱---所以它是loop宏決定它如何工作,而不是append函數。