0

match-lambda を使用して letrec への一致呼び出しをパターン化しようとしています。このパターンは次のように私には思えます:

(match-lambda
  (`(letrec ((,<var> ,<val>) . (,<vars> ,<vals>)) ,<expr> . ,<exprs>)
   `(<match>))

次の形式の呼び出しに一致する必要があります。

(letrec ((<var> <val>) ...) <expr> ...)

しかし、もちろん、これは機能しません。

アドバイスをいただければ幸いです。

4

2 に答える 2

1

...で構文を使用する必要があると思いますmatch-lambda

(match-lambda
  (`(letrec ((,<var> ,<val>) ...) ,<expr> ...)
    body))
于 2011-03-15T04:09:56.040 に答える
0

よくわかりませんが、問題は((,<var> ,<val>) . (,<vars> ,<vals>)). ((,<var> ,<val>) ,<vars> ,<vals>)これは、あなたが望むものではないものと同じです。おそらく次のようなものを試してみてください((,<var> ,<val>) . ,<vars-vals>))


私もドキュメントを調べましたが、それletrecはあなたの表現の一部であってはならないようで、おそらく使用する必要がありますmatch-lambda*

試す

(match-lambda
  (`(((,<var> ,<val>) . ,<vars-vals>) ,<expr> . ,<exprs>)
   `(<match>)))

(もちろん、私は間違っているかもしれませんが)

于 2011-03-18T13:31:50.397 に答える