2010-11-07 9 views
5

simplemente empecé a aprender Lisp y que no parecen entender el siguiente fragmento de código:¿Cómo funciona el trabajo de adición en Common Lisp?

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

Dónde está z adjunta?

+2

todas las z en cada iteración se anexan y devuelven como una lista ... –

Respuesta

10

Se adjunta a una lista sin nombre que se devolverá cuando termine el ciclo. Como primera aproximación, se puede pensar en él como un atajo para

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

El append aquí es una palabra clave bucle; no está relacionado con la función append, excepto que comparte el mismo nombre, por lo que es la macro loop la que decide cómo funciona, en lugar de la función append.