如何模式匹配'letrec'

我正在尝试使用match-lambda对letrec进行匹配调用。在我看来,这种模式:
(match-lambda
  (`(letrec ((,<var> ,<val>) . (,<vars> ,<vals>)) ,<expr> . ,<exprs>)
   `(<match>))
应匹配表单的调用:
(letrec ((<var> <val>) ...) <expr> ...)
但是,当然,这不起作用。 任何建议表示赞赏。     
已邀请:
我想你需要在
match-lambda
中使用
...
语法:
(match-lambda
  (`(letrec ((,<var> ,<val>) ...) ,<expr> ...)
    body))
    
我不确定,但我认为这个问题可能与
((,<var> ,<val>) . (,<vars> ,<vals>))
有关。这与
((,<var> ,<val>) ,<vars> ,<vals>)
相同,这不是你想要的。也许尝试类似
((,<var> ,<val>) . ,<vars-vals>))
的东西? 我也查看了文档,似乎
letrec
不应该是你表达的一部分,你应该使用
match-lambda*
。 尝试
(match-lambda
  (`(((,<var> ,<val>) . ,<vars-vals>) ,<expr> . ,<exprs>)
   `(<match>)))
(当然,我可能是错的)     

要回复问题请先登录注册