do
La fonction do en Scheme est une boucle avec initialisation, mise à jour et condition d’arrêt. Utile pour exécuter une séquence un nombre défini de fois ou jusqu’à une condition.
La forme générale de do :
(do ((var1 init1 update1)
(var2 init2 update2)
(var3 init3 update3))
(termination-condition result)
body)- Variable : variable(s) de boucle.
- Valeur initiale : valeur initiale.
- Expression de mise à jour : mise à jour par itération.
- Condition d’arrêt : condition d’arrêt.
- Expression de résultat : valeur renvoyée à l’arrêt.
- Body : code exécuté à chaque tour.
Exemple : somme de 1 à 5
(do ((i 1 (+ i 1)) ; Initialiser i à 1, incrémenter de 1
(sum 0 (+ sum i))) ; Initialiser la somme à 0, ajouter i à la somme
((> i 5) sum) ; Terminer quand i > 5, renvoyer sum
(lumi-message (number->string sum))) ; Affiche la somme à chaque étapeicommence à 1 et s’incrémente.sumaccumule la somme.- Arrêt quand
i > 5, retour desum.
Sortie : 15
Comment ça marche
- Initialisation : valeurs de départ.
- Test d’arrêt : au début de chaque tour.
- Itération : exécuter le corps, mettre à jour les variables.
Résumé
dooffre des boucles flexibles à plusieurs variables.- Utile quand l’état évolue à chaque tour.
- La condition d’arrêt fixe la fin et le résultat.
do combine liaisons (comme let) et contrôle itératif.