Implemented cintinuations and call/cc
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
(define add-5 '())
|
||||
(define res 1)
|
||||
|
||||
(mutate! res (+ 2 (call/cc (lambda (cont) (set! add-5 cont) 1)) 3))
|
||||
(assert (= res 6))
|
||||
|
||||
(add-5 100)
|
||||
(assert (= res 105))
|
||||
|
||||
(add-5 10)
|
||||
(assert (= res 15))
|
||||
|
||||
|
||||
;; ----------- works until here ---------------
|
||||
|
||||
|
||||
(set! res (+ 2 (call/cc (lambda (cont) (set! add-5 cont) 1)) 3))
|
||||
;; (print)
|
||||
;; (print res 6)
|
||||
(assert (= res 6))
|
||||
|
||||
(add-5 100)
|
||||
;; (print res 105)
|
||||
(assert (= res 105))
|
||||
|
||||
(add-5 10)
|
||||
(assert (= res 15))
|
||||
;; (print res 15)
|
||||
|
||||
;; (define fun '())
|
||||
|
||||
;; (mutate! res (apply (call/cc (lambda (k) (set! fun k) +)) (list 1 2 3)))
|
||||
|
||||
;; (assert (= res 6))
|
||||
;; (fun -)
|
||||
;; (assert (= res -1))
|
||||
Reference in New Issue
Block a user