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.

È stato utile?

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
scroll top