On Apr 24, 2016, at 7:35 PM, Matthias Felleisen <[email protected]> wrote: > > From the hip: Can your name-producing macro consume (val-producing-macro) and > then just directly generate the case-2 macro call directly:
Can this be generalized? As a rule of thumb, is this accurate: You can NEVER use a macro in a binding position (to produce identifiers). And therefore the corollary: A macro that wants to put identifiers in a binding position MUST produce the whole binding form for those identifiers. On Apr 24, 2016, at 7:58 PM, Alex Knauth <[email protected]> wrote: > One way to do this would be to make `(name-parsing-macro x "," y "," z)` a > match-expander > Does this work for you? Or is your case more complicated? Right, `match` is somewhat special. I'm interested in the more general problem (another sample posted below) ;;;;;;;;;;;;;; #lang racket (define-syntax-rule (binding-form _topid (_id ...)) (define (_topid) (let ([_id '_id] ...) (displayln (format "~a bound ~a" '_topid _id)) ...))) (binding-form foo (a b c)) (foo) ; works (define-syntax-rule (id-maker _a "," _b "," _c) (_a _b _c)) (binding-form bar (id-maker a ZIM b ZAM c)) (bar) ; fails, will treat `(id-maker ..)` expr as list of literal ids -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

