2011-10-11 71 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

我需要的功能!謝謝。 –