Я написал функцию match-rewriter
, которая просто match-lambda
, за исключением того, что она возвращает свой аргумент, если совпадение не найдено.match-rewriter
является частью большей функции.Вот часть кода:
((match-rewriter
(`(PARAMS: (,<arg>))
`(Success))
(`(,<func> . ,<args>)
`(Failure))
)ls)
Этот вызов функции:
(annotate '(PARAMS: (y))
возвращает Failure
В другом посте кто-то указал, что это работает:
#lang racket
(match `(PARAMS: (y))
[`(PARAMS: (,var)) 'yep]
[otherise 'nope])
возвращая да
Я проверил, что это работает, но я не могу понять, почему тот же шаблон не сопоставляется в match-rewriter
.
Странно, еслиЯ просто запускаю этот код, подставляя вручную «(PARAMS: (y))» для «ls», он работает.Что меня действительно смущает.
Любой совет приветствуется.