2008-10-29 11 views
6

In Peter Seibel Practical Common Lisp, er gibt dieses Beispiel:Lisp DO Argumentation variable Syntax

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

Ich kann sehen, wie es funktioniert, nums innerhalb der Schleife verwenden, aber nicht einen 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 bekommen.

Antwort

12

Weil es bequem ist und Einrückung speichert. Außerdem gehört der Akku konzeptionell zur Schleife, also warum nicht dort?