【发布时间】:2018-08-12 07:10:23
【问题描述】:
(define-syntax-rule (id . pattern) template) 中的. 是什么意思?它只是define-syntax-rule 语法的一部分,还是意味着球拍中的特殊含义?
【问题讨论】:
标签: racket
(define-syntax-rule (id . pattern) template) 中的. 是什么意思?它只是define-syntax-rule 语法的一部分,还是意味着球拍中的特殊含义?
【问题讨论】:
标签: racket
这是定义的标准可变参数语法(过程相同):名称之后和点之前的所有标识符都被视为必需参数,点之后是可变长度列表 (具有零个或多个元素)与可选参数。例如:
(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)
【讨论】: