Ha! The below solution is a macro-making macro that re-syntaxifies "params ..." to "belong to" the inner macro:
(define-syntax-rule (make-commands name params ...) (define-syntax (name inner-stx) (syntax-case inner-stx () [(_ (c f) (... ...)) (with-syntax ([(ps (... ...)) (datum->syntax inner-stx (syntax->datum #'(params ...)))]) #'(list (cons (symbol->string 'c) (λ (ps (... ...)) f)) (... ...)))]))) I'm not sure if this is the canonical solution, but nevertheless I think it's pretty awesome that this is possible and seems to work.
____________________ Racket Users list: http://lists.racket-lang.org/users