I want to use macros inside a let which is part of an expansion of a top-level macro in order to have local bindings visible to macros.
Is there a difference in implementation (e.g., when inside macros get expanded) between using syntax-rules versus syntax-case at the top level. Is this coding considered OK? (define-syntax foo (lambda (x) (syntax-case x () ((_ <e>) #'(let* ((v (cons 'a #f)) (doit (lambda (x) (set-cdr! v x)))) (letrec-syntax ((foo-1 (syntax-rules () ((_ <v>) (doit '<v>))))) (foo-1 <e>)) v))))) (define-syntax bar (syntax-rules () ((_ <e>) (let* ((v (cons 'a #f)) (doit (lambda (x) (set-cdr! v x)))) (letrec-syntax ((foo-1 (syntax-rules () ((_ <v>) (doit '<v>))))) (foo-1 <e>)) v)))) (foo 1) => (a . 1) (bar 1) => (a . 1)