方案:模式匹配语法

Scheme: pattern matching syntax

我正在尝试使用match-lambda进行一些相当复杂的模式匹配。但是,我在解析模式和匹配项的语法时遇到了很多麻烦,而且Googling还没有找到任何体面的引用。

似乎应该很简单的一件事是使用以下模式匹配字符串\\'(PARAMS:(y)):

1
2
(`(PARAMS: (,))
 <match>

但是它不起作用。

模式:

1
2
(`(PARAMS: ,)
 `<match>

匹配\\'(PARAMS:y),但我真的很希望能够将要匹配的参数放在方括号中。

奇怪的是,模式:

1
2
(`(PARAMS: (y))
 `<match>

甚至不匹配\\'(参数:(y))。似乎有一些我不了解的括号。


尝试发布一个完整的小型程序。这对我来说很好:

1
2
3
4
5
#lang racket

(match `(PARAMS: (y))
  [`(PARAMS: (,var)) 'yep]
  [otherise 'nope])

==>

1
'yep

(另请参见上面对您的问题的评论)