Itération sur les listes

La macro loop permet non seulement l'itération arithmétique, mais aussi l'itération sur les listes. Avec le mot-clé in, la variable d'itération prend comme valeur les éléments successifs de la liste :

* (loop for i in '(5 2 6 4)
        do (print i))

5
2
6
4
NIL
*

Pour ce type de clause, le mot-clé by indique une fonction utilisée pour obtenir l'élément suivant. La valeur par défaut est la fonction cdr :

* (loop for i in '(5 2 6 4) by #'cddr
        do (print i))

5
6
NIL
*

Si le mot-clé in est remplacé par on, on obtient non pas les éléments de la liste mais les sous-listes successives :

* (loop for i on '(5 2 6 4) by #'cddr
        do (print i))

(5 2 6 4)
(6 4)
NIL
*

Irene DURAND
2011-10-14