(module while mzscheme (provide while) (define-syntax (while stx) (syntax-case stx () [(while test-expr body ...) #'(let loop ([test test-expr]) (if test (begin body ... (loop test-expr))))] [else (raise-syntax-error #f "(while test-expr body ...) expected, got:" stx)])))