blob: 9dec47ec7634c0eda4df0406bd391ecfea4c721e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
(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))))
|