我刚刚开始学习这个方案,并弄清楚它的来龙去脉。我正试图解决一些练习题,却遇到了这个问题。定义了我的计数器后,我以为调用我的计数器会返回1,但它却返回<关闭>。在某种程度上,我理解闭包是什么,并认为count属于let,所以它会返回1,但我认为我忽略了一些东西。
(define my-counter
(let ((count 0))
(lambda ()
(set! count (+ count 1))
count)))
my-counter
返回一个过程。您需要调用该过程来获得下一个值。
(define counter-1 (my-counter))
(define counter-2 (my-counter))
(write (counter-1))
(write (counter-1))
(write (counter-2))