Commit | Line | Data |
---|---|---|
46d2d6f8 AW |
1 | (let ((set-counter2 #f)) |
2 | (define (get-counter2) | |
3 | (call/cc | |
4 | (lambda (k) | |
5 | (set! set-counter2 k) | |
6 | 1))) | |
7 | (define (loop counter1) | |
8 | (let ((counter2 (get-counter2))) | |
9 | (set! counter1 (1+ counter1)) | |
10 | (cond ((not (= counter1 counter2)) | |
11 | (error "bad call/cc behaviour" counter1 counter2)) | |
12 | ((> counter1 10) | |
13 | #t) | |
14 | (else | |
15 | (set-counter2 (1+ counter2)))))) | |
16 | (loop 0)) | |
13f1461c AR |
17 | |
18 | (let* ((next #f) | |
19 | (counter 0) | |
20 | (result (call/cc | |
21 | (lambda (k) | |
22 | (set! next k) | |
23 | 1)))) | |
24 | (set! counter (+ 1 counter)) | |
25 | (cond ((not (= counter result)) | |
26 | (error "bad call/cc behaviour" counter result)) | |
27 | ((> counter 10) | |
28 | #t) | |
29 | (else | |
30 | (next (+ 1 counter))))) |