私はスキームの最終試験に向けて勉強していますが、ローカル状態のオブジェクトは常に難しいテーマでした。
これは、私の最終試験の問題で、助けが必要です。
(define (make-incrementer n)
(let ((old 0)
(new 0))
(lambda ()
(cond ((< new n)
(set! old new)
(set! new (+ new 1))
old)
(else
(set! old 0)
(set! new 1)
old)))))
(define a (make-incrementer 3))
(define b (make-incrementer 3))
(define c a)
; 1) (a)
; 2) (a)
a
1 を返す 2 回目に呼び出されるのはなぜですか? 私はコードを見ていますが、n
私たちが与えるものは常に 3else
です。