2010-11-07 9 views
5

Je viens de commencer l'apprentissage Lisp et je ne semblent pas comprendre le morceau de code suivant:Comment append fonctionne en Common Lisp?

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

Où est z ajouté?

+2

tous les z de chaque itération sont ajoutés et renvoyés sous la forme d'une liste ... –

Répondre

10

Il est ajouté à une liste non nommée à renvoyer lorsque la boucle se termine. En première approximation, vous pouvez penser comme un raccourci pour

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

Le append est un mot-clé en boucle ici; il n'est pas lié à la fonction append, sauf pour partager le même nom --- c'est donc la macro loop qui décide comment cela fonctionne, au lieu de la fonction append.

Questions connexes