【发布时间】:2017-02-03 01:46:31
【问题描述】:
我发现自己定义的语法参数除了名称之外都具有相同的定义,因此我决定编写一个宏以使其更简单:
(define-syntax (test-case-parameter stx)
(syntax-parse stx
[(_ parameter:id)
#'(define-syntax-parameter parameter
(lambda (stx)
(raise-syntax-error stx "Can only be used inside test-case.")))]))
(test-case-parameter a)
(test-case-parameter b)
(test-case-parameter c)
但是,我不想重复宏名称,而是希望能够编写:
(test-case-parameter a b c)
但我不知道如何使用普通省略号语法来执行此操作,因为我需要将所有内容包装在 begin 中,这将创建一个新范围,并且我想要所有语法参数,就好像我有把他们每一个写在顶层。实现此目的的正确方法是什么?
【问题讨论】:
标签: macros racket variadic toplevel define-syntax