next up previous contents index
Next: Itération sur les listes Up: loop Previous: Répétition fixe   Contents   Index

Itération avec des clauses simultanées

Il est possible d'utiliser plusieurs clauses d'itérations simultanément. La boucle se termine alors lorsque l'une des conditions de terminaison du début du corps l'indique :

* (loop for i from 2 to 345
        repeat 3
        do (print i))

2
3
4
NIL
*

Ce comportement est conforme à l'explication des trois parties de l'expansion de la macro loop.

Lorsque deux ou plusieurs clauses for existent simultanément, la création des variables se fait de manière séquentielle comme pour let* et do*. Il est donc possible d'utiliser la valeur initiale d'une variable dans une autre clause for :

* (loop for i from 2 to 345
        for j from i to 6 by i
        do (print j))

2
4
6
NIL
*

Pour obtenir un comportement similaire à let ou do, on peut utiliser le mot-clé and :

* (let ((i 3))
    (loop for i from 2 to 345
          and j from i to 6 by i
          do (print j)))

3
6
NIL
*


next up previous contents index
Next: Itération sur les listes Up: loop Previous: Répétition fixe   Contents   Index
Robert STRANDH
2001-09-28