(module tail mzscheme (define-syntax let-tail-continuation (syntax-rules () [(let-tail-continuation k body1 body2 ...) (let ([thunk (let/cc return (let-syntax ([k (syntax-id-rules () [(k e) (return (lambda () e))] [k (lambda () (return (lambda () e)))])]) (lambda () body1 body2 ...)))]) (thunk))])) (define-syntax let/tc (make-rename-transformer #'let-tail-continuation)) (provide let-tail-continuation let/tc))