(define (cc) (let ((count 0)) (list (lambda () (set! count (+ count 1))) (lambda () count)))) ; Demos (define c1 (cc)) (define i1 (car c1)) (define r1 (cadr c1)) (define c2 (cc)) (define i2 (car c2)) (define r2 (cadr c2)) (list (r1) (r2)) ; => (0 0) (begin (i2) (i1) (i2)) (list (r1) (r2)) ; => (1 2)