I'm still trying to grok macros - which are amazing, but hard. I'd like to know if it is possible capture part of the following expression
(display (+ 2 (bar (+ 1 2)))) if "bar" is a literal in the macro, I would like to capture body0 as (+ 1 2) and body1 as (display (+ 2 ...)). This is a totally artificial example. Here's what I have: (define-syntax (define-foo stx) (syntax-case stx (bar) ([_ (name param) (body1 (bar . body0))] (syntax (define (name param) (body1 (+ 3 . body0))))))) (define-foo (foof env) (display (bar (+ 1 2)))) This works...and expands to. (define (foof env) (display (+ 3 (- 1 (+ 1 2))))) (Note that -1 has been substitute for the "bar" literal"). This expression fails with "bad syntax" (define-foo (foog env) (display (+3 (bar (- 1 (+ 1 2)))))) I don't seem be to able to capture (display (+3 )) as separate from (bar (-1 (+ 1 2))) Is this possible to capture? Thanks for any help and insights into macros Chad
____________________ Racket Users list: http://lists.racket-lang.org/users