パターン マッチング関数を既存のスキーム メタ循環エバリュエーターに追加しようとしています(これは宿題です)。指示の文言に少し迷っています。この点でより熟練した誰かが私がこれを解釈するのを手伝ってくれることを望んでいました.
match の構文は次のようになります。(match a ((p1 v1) (p2 v2) (p3 v3)))
そして、次のように長さを見つけるために使用できます。
(define length (lambda (x)
(match x (('() 0)
(('cons a b) (+ 1 (length b))))))
関数内のパターン言語には、数値定数、引用符で囲まれた定数、変数、およびコンスが含まれている必要があります。一致が見つからずにパターンが使い尽くされた場合は、エラーがスローされます。
パターン マッチングの概念は理解できたと思いますが、この方法で関数に実装すると、少し気が遠くなります。この関数が何をすべきかをよりよく理解できるように、上記の構文が何をしているのか (具体的には、上記の長さで match がどのように使用されているのか) を説明してくれる人はいますか?