This is, in part, the essence of the technique, so you're already on the right track.
Sam On Wed, Sep 25, 2013 at 9:55 AM, Dmitry Pavlov <dpav...@ipa.nw.ru> wrote: > Sam, > > Thank you for the references. I will read them shortly. > For now, I got away with a macro-generating macro: > > > (define-syntax (def-with-comment stx) > (syntax-case stx () > ((_ (name comment . params) . body) > #'(begin > (begin-for-syntax > (hash-set! comments (syntax->datum #'name) (syntax->datum > #'comment))) > (define (name . params) . body))))) > > > > On 09/25/2013 04:09 PM, Sam Tobin-Hochstadt wrote: >> >> On Wed, Sep 25, 2013 at 6:59 AM, Dmitry Pavlov <dpav...@ipa.nw.ru> wrote: >>> >>> >>> However, I do not see how to fix that. Does anybody? >>> What is the recommended way to do that sort of thing in Racket? >> >> >> This turns out to be a subtle issue, but one we've thought a lot >> about. The best way to learn about how we do this in Racket is a few >> papers that Matthew, Ryan, and I have written over the years: >> >> Languages as Libraries, PLDI 2011: >> http://www.ccs.neu.edu/racket/pubs/pldi11-thacff.pdf >> >> This covers a lot of ground, and at a fairly high level, but it will >> introduce the idea -- see section 6.2 >> >> Advanced Macrology ..., Scheme 2007: >> http://www.ccs.neu.edu/racket/pubs/scheme2007-ctf.pdf >> >> This paper focuses more on the issue you're interested in --- see >> section 3.2.3 in particular >> >> Composable and Compilable Macros, ICFP 2002: >> http://www.cs.utah.edu/plt/publications/macromod.pdf >> >> This paper introduces all the big ideas about the module system, but >> is probably harder for someone new to this to learn from. >> >> I'd start with the 'Advanced Macrology' paper, and look at the others, >> or post here again, if you get confused. >> >> Sam >> ____________________ >> Racket Users list: >> http://lists.racket-lang.org/users >> >> > ____________________ Racket Users list: http://lists.racket-lang.org/users