Seems to work
[rops.git] / tests / continuations.scm
blobe5c64fd685cfb954e672c35ac785d28c7e7a58aa
1 (define assert-equal
2   (lambda (x y)
3     (if (= x y)
4         x
5         (error "ASSERTION FAILED. Expected " x " got " y))))
7 ;;----------------------------------------------------------------------
8 ;; one-shot, outward
9 (define res (+ 1
10                (call/cc (lambda (k)
11                           (k 2)))
12                3)) 
14 res
15 (assert-equal 6 res)
17 ;;----------------------------------------------------------------------
18 ;; re-capture
19 (define retry 1)
20 (define res2 (call/cc (lambda (k)
21                         (set! retry k)
22                         (k (quote first-time)))))
24 (if (= res2 (quote first-time))
25     (retry (quote second-time))
26     (assert-equal res2 (quote second-time)))