<div dir="ltr">Here is a macro that is working, .. at least in the context it is being used:<br><br><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div><font face="monospace, monospace">  (define-syntax (with-tables stx)</font></div></div><div><div><font face="monospace, monospace">    (let*(</font></div></div><div><div><font face="monospace, monospace">           [datum  (syntax->datum stx)]</font></div></div><div><div><font face="monospace, monospace">           [stem   (cadr datum)]</font></div></div><div><div><font face="monospace, monospace">           [body   (cddr datum)]</font></div></div><div><div><font face="monospace, monospace">           )</font></div></div><div><div><font face="monospace, monospace">      (datum->syntax stx</font></div></div><div><div><font face="monospace, monospace">        (append</font></div></div><div><div><font face="monospace, monospace">          `(let(</font></div></div><div><div><font face="monospace, monospace">                 [table-publication (string-append ,stem "_publication")]</font></div></div><div><div><font face="monospace, monospace">                 [table-author (string-append ,stem "_author")]</font></div></div><div><div><font face="monospace, monospace">                 [table-bridge-publication-author (string-append ,stem "_bridge_publication_author")]</font></div></div><div><div><font face="monospace, monospace">                 [table-unique-counters (string-append ,stem "_unique_counters")]</font></div></div><div><div><font face="monospace, monospace">                 ))</font></div></div><div><div><font face="monospace, monospace">          body</font></div></div><div><div><font face="monospace, monospace">          )</font></div></div><div><div><font face="monospace, monospace"><br></font></div></div><div><div><div><font face="monospace, monospace">racket@> (with-tables "x" (displayln table-publication) table-author)</font></div></div></div><div><div><font face="monospace, monospace">x_publication</font></div></div><div><div><font face="monospace, monospace">"x_author"</font></div></div></blockquote><div><br></div><div><br></div><div>This same functionality as a syntax rule:<br><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div><font face="monospace, monospace"> (define-syntax with-tables</font></div></div><div><div><font face="monospace, monospace">    (syntax-rules () </font></div></div><div><div><font face="monospace, monospace">      [(with-tables stem body ...)</font></div></div><div><div><font face="monospace, monospace">        (let(</font></div></div><div><div><font face="monospace, monospace">              [table-publication (string-append stem "_publication")]</font></div></div><div><div><font face="monospace, monospace">              [table-author (string-append stem "_author")]</font></div></div><div><div><font face="monospace, monospace">              [table-bridge-publication-author (string-append stem "_bridge_publication_author")]</font></div></div><div><div><font face="monospace, monospace">              [table-unique-counters (string-append stem "_unique_counters")]</font></div></div><div><div><font face="monospace, monospace">              )</font></div></div><div><div><font face="monospace, monospace">          body ...</font></div></div><div><div><font face="monospace, monospace">          )</font></div></div><div><div><font face="monospace, monospace">        ]</font></div></div><div><div><font face="monospace, monospace">      ))</font></div></div><div><div><font face="monospace, monospace"><br></font></div></div><div><div><font face="monospace, monospace">   #|</font></div></div><div><div><font face="monospace, monospace">    racket@> (with-tables "x" table-author)</font></div></div><div><div><font face="monospace, monospace">    reference to undefined identifier: table-author</font></div></div><div><div><font face="monospace, monospace">    stdin::6353: table-author</font></div></div><div><div><font face="monospace, monospace">     === context ===</font></div></div><div><div><font face="monospace, monospace">    /usr/share/racket/collects/racket/private/misc.rkt:87:7</font></div></div><div><div><font face="monospace, monospace">   |#</font></div></div></blockquote><div><br></div><div><br></div><div>Fails with a undefined identifier, but to do that it would have to evaluate the argument.   Ok, so what did I do wrong here?<br><br>..not surprisingly, same result with define-syntax-rule ..</div><div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><font face="monospace, monospace"> (define-syntax-rule (with-tables stem body ...)</font></div></div><div><div><font face="monospace, monospace">      (let(</font></div></div><div><div><font face="monospace, monospace">            [table-publication (string-append stem "_publication")]</font></div></div><div><div><font face="monospace, monospace">            [table-author (string-append stem "_author")]</font></div></div><div><div><font face="monospace, monospace">            [table-bridge-publication-author (string-append stem "_bridge_publication_author")]</font></div></div><div><div><font face="monospace, monospace">            [table-unique-counters (string-append stem "_unique_counters")]</font></div></div><div><div><font face="monospace, monospace">            )</font></div></div><div><div><font face="monospace, monospace">        body ...</font></div></div><div><div><font face="monospace, monospace">        ))</font></div></div><div><div><font face="monospace, monospace"><br></font></div></div><div><div><font face="monospace, monospace">  #|</font></div></div><div><div><font face="monospace, monospace">    racket@> (with-tables "x" table-author)</font></div></div><div><div><font face="monospace, monospace">    reference to undefined identifier: table-author</font></div></div><div><div><font face="monospace, monospace">    stdin::6353: table-author</font></div></div><div><div><font face="monospace, monospace">     === context ===</font></div></div><div><div><font face="monospace, monospace">    /usr/share/racket/collects/racket/private/misc.rkt:87:7</font></div></div><div><div><font face="monospace, monospace">  |#</font></div></div></blockquote><div><br></div><div>-Thomas<br><br><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><br></div><div><div><br></div></div><div><br></div></blockquote></div></div>