Scheme中的模式匹配错误

时间:2011-02-27 23:16:46

标签: syntax scheme pattern-matching racket

我编写的函数match-rewriter仅为match-lambda,但如果找不到匹配则返回其参数。 match-rewriter是更大功能的一部分。以下是代码的一部分:

((match-rewriter

   (`(PARAMS: (,<arg>))
    `(Success))

   (`(,<func> . ,<args>)
    `(Failure))

   )ls)

此函数调用:

(annotate '(PARAMS: (y))

返回失败

在另一篇文章中有人指出这有效:

#lang racket

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

返回是的

我确认它有效,但我无法弄清楚为什么在match-rewriter中没有匹配相同的模式。

奇怪的是,如果我只是手动运行此代码,用'(PARAMS:(y))代替“ls”就行了。这让我很困惑。

感谢任何建议。

0 个答案:

没有答案