フローをたどろうとしている非常に単純なコードがあり、理解していると思いますが、確認したいだけです
(define count
(let ([next 0])
(lambda ()
(let ([v next])
(set! next (+ next 1))
v))))
基本的に、count は呼び出された回数を追跡します。最初に呼び出したとき、next は let を使用して 0 に設定されます。その後、set! を使用して 1 に変更します。(let ([next 0]) が、プログラムが呼び出されるたびに next を 0 に戻さない理由を理解しようとしています。私が知る限り、(lambda () ...) は実際の関数は (引数を取らずに) 開始するので、再度 count を呼び出すと、そのスコープ (set! one) 内の next の値を使用して、そこから実行されます。
私は思う...私は正直まだ少し確信が持てません。セットします!最初の行が (let ((next 0))) であっても、count を再度呼び出すと、自動的に next が永続的に変更されるだけで、実際にはゼロに戻りませんか?