Пытаюсь использовать макрос
(define-syntax-rule (with-template ([var ...] [form ...] ...) body ...)
(begin (define-syntax-rule (inner var ...) (begin body ...))
(inner form ...) ...))
для описания пачки однотипных макросов
(with-template
([src dst]
[define-gi define-gi*]
[define-gtk define-gtk*])
(define-syntax (dst stx)
(syntax-case stx ()
[(dst id params ...)
(let ([new-id (string->symbol (string-replace (symbol->string (syntax-e #'id)) "-" "_"))])
#`(src id params ... #:c-id #,new-id))])))
Получаю очень странную ошибку main.rkt:38:20: syntax: no pattern variables before ellipsis in template at: ... in: (begin (define...syntax-e (syntax id))) "-" «_»)))) (quasisyntax (src id params ... #:c-id (unsyntax new-id))))))))
При том, что
(define-syntax (define-gtk* stx)
(syntax-case stx ()
[(define-gtk* id params ...)
(let ([new-id (string->symbol (string-replace (symbol->string (syntax-e #'id)) "-" "_"))])
#`(define-gtk id params ... #:c-id #,new-id))]))
Что я ещё не понял про рэкетовские макросы?