, "next reset 0 , count",
(define count (let ((next 0))
(lambda ()
(let ((v next))
(set! next (+ next 1))
v))))
(define count
(set! count ( (lambda (next) ; close over `next`
(lambda () ; and then return lambda which _will_
(let ((v next)) ; read from `next`,
(set! next (+ v 1)) ; write new value to `next`,
v))) ; and then return the previous value;
0 )) ; `next` is initially 0
( "let-over-lambda", Lisp ).
count "" . , next, () (). , count "", , , () : , . ; , , .
. , . (lambda () ...) next, (lambda (next) ...).