具有无数个参数的球拍宏

时间:2014-01-14 22:50:24

标签: macros scheme lisp racket

我想要一个可以接受任意数量参数并返回每个参数列表的宏,如下所示:

(TEST first second third)
=> '(first second third)

2 个答案:

答案 0 :(得分:4)

喜欢这样吗?

(define-syntax-rule (TEST . lst)
  (quote lst))

(TEST first second third)
=> '(first second third)

或只是

(define-syntax-rule (TEST . lst)
  'lst)

答案 1 :(得分:2)

这是另一种方式,使用define-syntax

(define-syntax TEST
  (syntax-rules ()
    ((_ . lst) 'lst)))

当然你可以直接引用表达式,在这里使用宏真的没有必要:

'(first second third)