球拍中的点表示什么?

时间:2018-08-12 07:10:23

标签: racket

.中的(define-syntax-rule (id . pattern) template)是什么意思?仅仅是define-syntax-rule语法的一部分,还是在球拍中意味着特殊之处?

1 个答案:

答案 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)