;; Broken version (let-syntax ((foo (syntax-rules () ((_) (letrec-syntax ((bar (er-macro-transformer (lambda (e r c) (if (= (cadr e) 0) 0 `(,(r '+) 1 (,(r 'bar) ,(- (cadr e) 1)))))))) (bar 5)))))) (foo)) ;; Correct version (let-syntax ((foo (syntax-rules () ((_) (letrec-syntax ((bar (er-macro-transformer (lambda (e r c) (if (= (caddr e) 0) 0 `(,(r '+) 1 (,(cadr e) ,(cadr e) ,(- (caddr e) 1)))))))) (bar bar 5)))))) (foo))