(define-module (closure) #:export (iterative-add set-store peek-store advance-char)) (define (iterative-add) "Given NUM, returns NUM plus the previous supplied NUM." (let ((prev-num 0)) (lambda num (let ((result (+ (car num) prev-num))) (set! prev-num (car num)) result)))) (define set-store #f) (define peek-char #f) (define advance-char #f) (let ((store '())) (set! set-store (lambda (lst) (set! store lst))) (set! peek-char (lambda () (car store))) (set! advance-char (lambda () (let ((ret (car store))) (set! store (cdr store)) ret))))