2008-10-29 20 views
6

DO, o bu örnek verir:Lisp Peter Seibel'in <em>Pratik Common Lisp</em> yılında değişken sözdizimi akıl

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

o döngünün içindeki nums kullanarak ama bunu bir adım formu vermiyorum, nasıl çalıştığını görebilirsiniz. Neden değişken tanımı nums koymak yerine bu yapacağını:

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

İyi bir sebebi vardır eminim, ama ben henüz alamadım.

cevap

12

Çünkü uygun ve girinti kaydeder. Ayrıca, akümülatör kavramsal olarak döngüye aittir, o halde neden oraya koymayın?

İlgili konular