Scheme 计划回报<#关闭>;而不是1

Scheme 计划回报<#关闭>;而不是1,scheme,Scheme,我刚刚开始研究这个计划,并弄清楚它的来龙去脉。我试图解决一些实践问题,我遇到了这个问题。定义了我的计数器后,我以为调用我的计数器会返回1,但它却返回了。我在某种程度上理解闭包是什么,并且认为count属于let,所以它将返回1,但我想我忽略了一些东西 (define my-counter (let ((count 0)) (lambda () (set! count (+ count 1)) count))) my counter返回一个过程。您

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

这是一个相当复杂的想法,在您熟悉了过程生成过程之后,才在中途介绍。