什么意思是“(?符号?名称)”?

时间:2011-03-27 04:30:54

标签: list syntax scheme racket

即使在为这个问题选择标题时我也遇到了问题。请随时编辑它。

我得到了这个Scheme代码并且不理解这个块。

(define (func b)
 (match b
   [(list (? symbol? x) rhs) ...

故障部分是(?符号?x)。我想这是某种比较器,但我在任何地方都找不到任何关于它的东西!它很难搜索,因为我不知道如何命名这个命令。

我想至少得到它的名字,进一步的解释表示赞赏。 =)

谢谢!

1 个答案:

答案 0 :(得分:1)

刚刚找到它!

这是(match ...)语法的特定情况。在这里找到它:Pattern Matching

更具体:

  

(匹配val-expr子句......)

     

clause = [pat expr ... +]
  | [pat(=> id)expr ... +]

pat is

  

pat :: = id [匹配任何内容,绑定标识符]
          (...)
          | (?expr pat ...)[匹配if(expr value)和pat]

所以我说得对:它正在检查x是否是符号。

我很幸运!请完成此主题! 非常感谢!