;;; VERSION 1 ;;; (define-syntax let/cc (ir-macro-transformer (lambda (expr inject compare) (let ([escape (cadr expr)] [body (cddr expr)]) `(call/cc (lambda (,(inject escape)) ,@(inject body))))))) (expand '(let/cc k ((lambda (d) (k d)) 1))) ;; (call/cc239 (lambda237 (k236) ((lambda237 (d238) (k236 d238)) 1))) ;;; VERSION 2 ;;; (define-syntax let/cc (ir-macro-transformer (lambda (expr inject compare) (let ([escape (cadr expr)] [body (cddr expr)]) `(call/cc (lambda (,escape) ,@body)))))) (expand '(let/cc k ((lambda (d) (k d)) 1))) ;; (call/cc253 (lambda251 (k) ((lambda (d) (k d)) 1)))