Frage

Peter Seibel Practical Common Lisp , er gibt dieses Beispiel:

(do ((nums nil) (i 1 (1+ i)))
    ((> i 10) (nreverse nums))
  (push i nums))

kann ich sehen, wie es funktioniert, nums innerhalb der Schleife verwenden, aber nicht eine Schritt-Form. Warum würden Sie nums in der Variablen-Definition setzen, anstatt dies zu tun:

(let (nums) (do ((i 1 (+ i 1)))
         ((> i 10) (nreverse nums))
       (push i nums)))

Ich bin sicher, es gibt einen guten Grund, aber ich es noch nicht erhalten.

War es hilfreich?

Lösung

Weil es bequem ist und spart Einzug. Darüber hinaus gehört der Speicher konzeptionell an die Schleife, also warum es nicht dort setzen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top