Ragionamento della sintassi variabile DO Lisp
Domanda
Nel Pratico Lisp di Peter Seibel, fa questo esempio:
(do ((nums nil) (i 1 (1+ i)))
((> i 10) (nreverse nums))
(push i nums))
Riesco a vedere come funziona, usando i numeri all'interno del ciclo ma non dandogli un modulo. Perché dovresti inserire i numeri nella definizione della variabile anziché farlo:
(let (nums) (do ((i 1 (+ i 1)))
((> i 10) (nreverse nums))
(push i nums)))
Sono sicuro che ci sia una buona ragione, ma non l'ho ancora capito.
Soluzione
Perché è conveniente e salva il rientro. Inoltre, l'accumulatore appartiene concettualmente al ciclo, quindi perché non metterlo lì?
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow