方案返回 <#Closure> 而不是 1



我刚刚开始学习这个方案,并弄清楚它的来龙去脉。我正试图解决一些练习题,却遇到了这个问题。定义了我的计数器后,我以为调用我的计数器会返回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))

最新更新