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)