Welcome to DrRacket, version 7.4 [3m]. Language: racket, with debugging [custom]; memory limit: 128 MB. > (define g (make-stream 1 2 (+ 3 4))) > (next! g) 1 > (next! g) 2 > (next! g) 7 > (next! g) 'DONE > (shift hi 8) . . shift: undefined; cannot reference an identifier before its definition > (require racket/control) > (shift hi 8) 8 > (shift hi (+ 5 9)) 14 > hi . . hi: undefined; cannot reference an identifier before its definition > (+ 5 (shift hi 1)) 1 > (define cont (void)) > (+ 5 (shift k (set! cont k))) > k . . k: undefined; cannot reference an identifier before its definition > cont # > (cont 7) 12 > (+ 5 (shift k (set! cont k))) ; k = (+ 5 _) > (cont 7) 12 > (cont 10) 15 > (cont (+ 5 (shift k 10))) 10 > (+ 5 (shift k 1)) 1 > (+ 5 (shift k (k 1))) 6 > (+ 5 (shift k (* (k 1) (k 2)))) ; k = (+ 5 _) 42 > ; ==> (* (k 1) (k 2)) ==> (* (+ 5 1) (+ 5 2)) ==> (* 6 7) ==> 42 42 42 > (list (+ 5 (shift k (append (k 1) (k 2))))) ; k = (list (+ 5 _)) '(6 7) > ; ==> (append (k 1) (k 2)) ==> (append (list (+ 5 1)) (list (+ 5 2))) '(6 7) '(6 7) > (define a (+ 5 (shift k (* (k 1) (k 2))))) . . *: contract violation expected: number? given: # argument position: 1st other arguments...: > (define a (+ 5 (shift k (* (k 1) (k 2))))) ; k = (define a (+ 5 _)) . . *: contract violation expected: number? given: # argument position: 1st other arguments...: > (define a (reset (+ 5 (shift k (* (k 1) (k 2)))))) > a 42 > ; k = (+ 5 _) a 42 > (reset (+ 2 4 5)) 11 > (+ (shift k 5) (/ 1 0)) 5 > (+ (shift k (k 5)) (/ 1 0)) . . /: division by zero >