Pregunta

En Practical Common Lisp de Peter Seibel, da este ejemplo:

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

Puedo ver cómo funciona, usando números dentro del bucle pero sin darle una forma de paso. ¿Por qué pondría números en la definición de variable en lugar de hacer esto?

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

Estoy seguro de que hay una buena razón, pero todavía no la entiendo.

¿Fue útil?

Solución

Porque es conveniente y guarda sangría. Además, el acumulador conceptualmente pertenece al bucle, entonces, ¿por qué no ponerlo allí?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top