; a lexical closure / functor / lambda ; variabele count is lexically scoped within the make-counter function, ; therefore it remains accessible by the counter procedure even after ; make-counter has finished. (defun make-counter () (let ((count 0)) (lambda () (setq count (+ count 1)) count))) (define counter_1 (make-counter)) (define counter_2 (make-counter)) (defvar i 0) (while (< i 10) (print (counter_1)) ; each counter keeps its own count (print (counter_2)) (setq i (+ i 1)) )