do
Die Funktion do in Scheme ist eine Schleife mit Initialisierung, Aktualisierung und Abbruchbedingung. Nützlich, wenn eine Sequenz eine bestimmte Anzahl von Malen oder bis zu einer Bedingung laufen soll.
Die allgemeine Form von do:
(do ((var1 init1 update1)
(var2 init2 update2)
(var3 init3 update3))
(termination-condition result)
body)- Variable: Schleifenvariable(n).
- Startwert: Startwert.
- Aktualisierungsausdruck: Aktualisierung pro Iteration.
- Abbruchbedingung: Abbruchbedingung.
- Ergebnisausdruck: Rückgabewert beim Abbruch.
- Body: Code pro Iteration.
Beispiel: Summe von 1 bis 5
(do ((i 1 (+ i 1)) ; i auf 1 initialisieren, um 1 erhöhen
(sum 0 (+ sum i))) ; Summe auf 0 initialisieren, i zur Summe addieren
((> i 5) sum) ; Beenden, wenn i > 5, sum zurückgeben
(lumi-message (number->string sum))) ; Gibt die Summe bei jedem Schritt ausistartet bei 1 und wird inkrementiert.sumakkumuliert die Summe.- Abbruch bei
i > 5, Rückgabe vonsum.
Ausgabe: 15
So funktioniert es
- Initialisierung: Startwerte zuweisen.
- Abbruchprüfung: Zu Beginn jeder Iteration.
- Iteration: Body ausführen, Variablen aktualisieren.
Zusammenfassung
dobietet flexible Schleifen mit mehreren Variablen.- Nützlich bei Zustandsänderungen über Iterationen.
- Die Abbruchbedingung bestimmt Ende und Ergebnis.
do verbindet gebundene Variablen (wie let) mit iterativer Steuerung.