(define make-count (let ((glob 0)) (lambda () (let ((loc 0)) (lambda (msg) (cond ((eq? msg 'local) (lambda () (set! loc (+ loc 1)) loc)) ((eq? msg 'global) (lambda () (set! glob (+ glob 1)) glob)) (else (error "No such method" msg)) ))))))