В «Практическом общем лиспе» Питера Сейбела он приводит такой пример:
(do ((nums nil) (i 1 (1+ i)))
((> i 10) (nreverse nums))
(push i nums))
Я могу видеть, как это работает, используя числа внутри цикла, но не давая ему пошаговую форму. Почему вы должны указывать числа в определении переменной, а не делать это:
(let (nums) (do ((i 1 (+ i 1)))
((> i 10) (nreverse nums))
(push i nums)))
Я уверен, что есть веская причина, но я еще не понимаю.