.
中的(define-syntax-rule (id . pattern) template)
是什么意思?仅仅是define-syntax-rule
语法的一部分,还是在球拍中意味着特殊之处?
答案 0 :(得分:2)
这是定义的标准变量参数语法(过程相同):名称后和点之前的所有标识符均被视为必需参数,并且点之后的变量长度为 list (具有零个或多个元素)以及可选参数。例如:
(define (test x . args)
(displayln x)
(displayln args))
(test)
=> arity mismatch, the expected number of arguments
does not match the given number
(test 1)
=> 1
()
(test 1 2)
=> 1
(2)
(test 1 2 3)
=> 1
(2 3)
可能需要零个参数,使所有参数都是可选的:
(define (test . args)
(displayln args))
(test)
=> ()
(test 1)
=> (1)
(test 1 2)
=> (1 2)
对于define-syntax-rule
,这意味着在id
之后,期望零个或多个模式:
(define-syntax-rule (id . pattern) template)