我正在尝试使用match-lambda对letrec进行匹配调用。在我看来,这种模式:
(match-lambda
(`(letrec ((,<var> ,<val>) . (,<vars> ,<vals>)) ,<expr> . ,<exprs>)
`(<match>))
应匹配表单的调用:
(letrec ((<var> <val>) ...) <expr> ...)
但是,当然,这不起作用。
感谢任何建议。
答案 0 :(得分:1)
我认为您需要使用...
中的match-lambda
语法:
(match-lambda
(`(letrec ((,<var> ,<val>) ...) ,<expr> ...)
body))
答案 1 :(得分:0)
我不确定,但我认为问题可能出在((,<var> ,<val>) . (,<vars> ,<vals>))
上。这与((,<var> ,<val>) ,<vars> ,<vals>)
相同,这不是您想要的。也许尝试((,<var> ,<val>) . ,<vars-vals>))
?
我也调查了documentation,似乎letrec
不应该是你表达的一部分,你应该使用match-lambda*
。
尝试
(match-lambda
(`(((,<var> ,<val>) . ,<vars-vals>) ,<expr> . ,<exprs>)
`(<match>)))
(当然,我可能错了)