(module gotos-cc mzscheme ;; Trying to encode the spirit of ;; ;; 10 PRINT "HELLO WORLD" ;; 20 GOTO 10 ;; ;; using Scheme's continuations. (define (program-1 end) (let ([line-10 #f] [line-20 #f] [line-end #f]) (let/cc def-k (begin (let/cc k (set! line-10 k) (def-k)) (printf "hello world\n") (line-20))) (let/cc def-k (begin (let/cc k (set! line-20 k) (def-k)) (line-10))) (let/cc def-k (begin (let/cc k (set! line-end k) (def-k)) (end))) line-10)) ;; Trying to encode the spirit of ;; ;; 10 GOTO 20 ;; 20 PRINT "HELLO WORLD" ;; ;; using Scheme's continuations. (define (program-2 k-end) (let ([line-10 #f] [line-20 #f] [line-end #f]) (let/cc def-k (begin (let/cc k (set! line-10 k) (def-k)) (line-20))) (let/cc def-k (begin (let/cc k (set! line-20 k) (def-k)) (printf "hello world\n") (line-end))) (let/cc def-k (begin (let/cc k (set! line-end k) (def-k)) (k-end))) line-10)) (define (run prog) (let/ec end ((prog end)))))