【问题标题】:what does the dot mean here in racket?球拍中的点是什么意思?
【发布时间】:2018-08-12 07:10:23
【问题描述】:

(define-syntax-rule (id . pattern) template) 中的. 是什么意思?它只是define-syntax-rule 语法的一部分,还是意味着球拍中的特殊含义?

【问题讨论】:

    标签: racket


    【解决方案1】:

    这是定义的标准可变参数语法(过程相同):名称之后和点之前的所有标识符都被视为必需参数,点之后是可变长度列表 (具有零个或多个元素)与可选参数。例如:

    (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)
    

    【讨论】:

      猜你喜欢
      • 2016-08-17
      • 2012-09-30
      • 2019-12-25
      • 2016-02-20
      • 1970-01-01
      • 2011-08-12
      • 2017-06-11
      • 2018-03-05
      • 2023-03-27
      相关资源
      最近更新 更多