标签: racket
如何匹配球拍中的文字?这似乎不起作用:
(define (foo e) (match e [(list + e1 e2) "+"] [(list - e1 e2) "-"]))
它为(foo '(+ 1 2))和(foo '(- 1 2))都返回“ +”
(foo '(+ 1 2))
(foo '(- 1 2))
答案 0 :(得分:3)
您想要模式(list '+ e1 e2)和(list '- e1 e2)(带有'!),因为否则+和-被视为普通标识符并匹配就像e1和e2一样。
(list '+ e1 e2)
(list '- e1 e2)
'
+
-
e1
e2