On Mon, Aug 31, 2020 at 10:06:42AM -0700, Shriram Krishnamurthi wrote: > I'm having some trouble abstracting over this code. Any suggestions? > > I have numerous files that follow this boilerplate: > > #lang racket > > (require <LIBRARY FILE>) > > (provide (rename-out [mod-begin #%module-begin] > [ti #%top-interaction])) > > (define-values (namespaces lang-print-names) > <THE ONLY PART THAT CHANGES>) > > (define-syntax (multi-runner stx) > (syntax-case stx (TEST) > [(_ (TEST e r ...)) > #`(test-output 'e (list 'r ...) namespaces)] > [(_ e) > #`(show-output 'e namespaces lang-print-names)])) > > (define-syntax mod-begin > (λ (stx) > (syntax-case stx () > [(_ b ...) > #'(#%printing-module-begin (multi-runner b) ...)]))) > > (define-syntax ti > (λ (stx) > (syntax-case stx () > ([_ . e] > #'(#%top-interaction . (multi-runner e)))))) > > I've abstract most of the details into `test-output` and `show-output` into > <LIBRARY FILE>. I would ideally like to move as much of what's left as > possible into the same file. > > The key problem is that the MB and TI depend on `multi-runner`, which in > turn depends on `namespaces`, which is a name at run time. As long as > everything is in the same module, no problem. But when I start to move the > boilerplate out… > > Concrete suggestions welcome — I've tried several different things (various > forms of abstraction, syntax parameters, etc.) without luck.
Maybe a macro or two? Perhaps a nonhygienic one? -- hendrik > > Thanks, > Shriram > > -- > 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]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/racket-users/362f807e-3561-4be6-8b4d-937776fea36bn%40googlegroups.com. -- 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]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/20200831172435.6f6oweyhxjux4g5j%40topoi.pooq.com.

