我编写的函数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”就行了。这让我很困惑。
感谢任何建议。