(call/cc (lambda (k) (+ 2 3 4 (k 0)))) (call/cc (lambda (k) (+ (k 0) 2 3 4))) (let* ([x1 (call/cc (lambda (k) k))] [a 1] [b (+ a 1)] [c (+ b 1)] [x2 (call/cc (lambda (k) k))]) c) (let* ([x1 (call/cc (lambda (k) k))] [a 1] [b (+ a 1)] [c (+ b 1)] [x2 (call/cc (lambda (k) k))]) (x1 x1) c) (let* ([x1 (call/cc (lambda (k) k))] [a 1] [b (+ a 1)] [c (+ b 1)] [x2 (call/cc (lambda (k) k))]) (x1 x2) c) (let ([index 0] [prod 1]) (let* ([x1 (call/cc (lambda (k) k))] [index (+ index 1)] [prod (* prod index)] [x2 (call/cc (lambda (k) k))]) (if (< index 5) (x2 x1) prod))) (let ([index 0] [prod 1]) (let* ([x1 (call/cc (lambda (k) k))] [index (+ index 1)] [prod (* prod index)] [x2 (call/cc (lambda (k) k))]) (if (< index 5) (x1 x2) prod))) (let ([index 0] [prod 1]) (let ([x1 (call/cc (lambda (k) k))]) (set! index (+ index 1)) (set! prod (* prod index)) (if (< index 5) (x1 x1) prod))) (define foo (lambda (n) (let ([index 0] [prod 1]) (let ([x1 (call/cc (lambda (k) k))]) (set! index (+ index 1)) (set! prod (* prod index)) (if (< index n) (x1 x1) prod))))) (define foo (lambda (n) (call/cc (lambda (x2) (let ([index 0] [prod 1]) (let ([x1 (call/cc (lambda (k) k))]) (set! index (+ index 1)) (set! prod (* prod index)) (if (< index n) (x1 x1) (x2 prod)))))))) (define foo (lambda (n) (call/cc (lambda (x2) (let ([index 0] [prod 1]) (let ([x1 (call/cc (lambda (k) k))]) (set! index (+ index 1)) (set! prod (* prod index)) (if (< index n) (x1 x2) (x2 prod))))))))