2011-10-11 73 views
1

我得到了这一位Scheme代码,并且负责将代码翻译成Perl。方案关闭功能

(define (makecounter) 
(let ((x 0)) (lambda() (begin (set! x (+ x 1)) x)))) 

我知道这应该是一个闭包函数,但我不能完全得到这应该做的。有任何想法吗?

+0

看起来返回将增加一个变量 – Joe

回答

5

提示:

(define c1 (makecounter)) 
(define c2 (makecounter)) 
(c1) 
=> 1 
(c1) 
=> 2 
(c1) 
=> 3 
(c2) 
=> 1 
(c2) 
=> 2 
(c1) 
=> 4 
+0

我需要的功能!谢谢。 –