質問
Peter Seibelの Practical Common Lisp で、彼はこの例を挙げています:
(do ((nums nil) (i 1 (1+ i)))
((> i 10) (nreverse nums))
(push i nums))
ループ内でnumsを使用するが、ステップ形式を与えずに、どのように機能するかを見ることができます。これを行うのではなく、変数定義にnumを入れるのはなぜですか:
(let (nums) (do ((i 1 (+ i 1)))
((> i 10) (nreverse nums))
(push i nums)))
正当な理由があると確信していますが、まだわかりません。
解決
便利でインデントを節約できるため。さらに、アキュムレータは概念的にループに属しているので、なぜそこに配置しないのですか?
所属していません StackOverflow