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 > (next! g) 'DONE > (require racket/control) > shift . shift: bad syntax in: shift > (shift hi 8) 8 > (shift hi (+ 5 9)) 14 > hi . . hi: undefined; cannot reference an identifier before its definition > (+ 5 (shift hi 1)) 1 > hi . . hi: undefined; cannot reference an identifier before its definition > (define cont (void)) > (+ 5 (shift hi (begin (set! cont hi) 1))) 1 > cont # > (cont 4) 9 > (cont 3) 8 > (cont 1) 6 > (+ 5 (shift k (k 1))) ; k = (+ 5 _) 6 > (+ 5 (shift k (* (k 1) (k 2)))) 42 > (* (k 1) (k 2)) ; k = (+ 5 _) . . k: undefined; cannot reference an identifier before its definition > (* (+ 5 1) (+ 5 2)) 42 > (list (+ 5 (shift k (append (k 1) (k 2))))) ; k = (list (+ 5 _)) '(6 7) > ; (append (k 1) (k 2)) ; where k = (list (+ 5 _)) (append (list (+ 5 1)) (list (+ 5 2))) '(6 7) > (* (+ 1 (shift k (+ (k 5) (k 6))))) ; k = (* (+ 1 _)) 13 > (+ (* (+ 1 5)) (* (+ 1 6))) 13 > (* 5) 5 > (define a (* (+ 1 (shift k (+ (k 5) (k 6)))))) . . +: contract violation expected: number? given: # argument position: 1st other arguments...: > ;k = (define a (* (+ 1 _))) 3 3 > (define a (reset (* (+ 1 (shift k (+ (k 5) (k 6))))))) > a 13 > (reset (* 3 4)) 12 > ;what does k represent in: ; (reset (* 10 (+ 2 (shift k (* (k 3) (k 4)))))) ; Answer: k = (* 10 (+ 2 _)) ; (* (k 3) (k 4)) ; where k = (* 10 (+ 2 _)) ; (* (* 10 (+ 2 3)) (* 10 (+ 2 4))) ; (* 50 60) (reset (* 10 (+ 2 (shift k (* (k 3) (k 4)))))) 3000 > ; (* 10 (reset (+ 2 (shift k (* (k 3) (k 4)))))) ; k = (+ 2 _) ; (* 10 (* (k 3) (k 4))) ; (* 10 (* (+ 2 3) (+ 2 4))) ; (* 10 (* 30)) ; 300 (* 10 (reset (+ 2 (shift k (* (k 3) (k 4)))))) 300 > ; (* 10 (+ 2 (reset (shift k (* (k 3) (k 4)))))) ; k = _ ; (* 10 (+ 2 (* (k 3) (k 4)))) ; (* 10 (+ 2 (* 3 4))) ; (* 10 (+ 2 12)) ; 140 (* 10 (+ 2 (reset (shift k (* (k 3) (k 4)))))) 140 >