Я не уверен, но думаю, что проблема может быть в ((,<var> ,<val>) . (,<vars> ,<vals>))
. Это идентично ((,<var> ,<val>) ,<vars> ,<vals>)
, что не то, что вы хотите. Может быть, попробовать что-то вроде ((,<var> ,<val>) . ,<vars-vals>))
?
Я также изучил документацию , и кажется, что letrec
не должно быть частью вашего выражения, и вы, возможно, должны использовать match-lambda*
.
Попробуйте
(match-lambda
(`(((,<var> ,<val>) . ,<vars-vals>) ,<expr> . ,<exprs>)
`(<match>)))
(хотя, конечно, я могу ошибаться)