Peter Seibel のPractical Common Lispで、彼は次の例を挙げています。
(do ((nums nil) (i 1 (1+ i)))
((> i 10) (nreverse nums))
(push i nums))
ループ内で nums を使用しているが、ステップ形式を与えていないため、どのように機能するかを確認できます。これを行うのではなく、変数定義に数値を入れる理由は次のとおりです。
(let (nums) (do ((i 1 (+ i 1)))
((> i 10) (nreverse nums))
(push i nums)))
ちゃんとした理由があると確信していますが、まだわかりません。