次のリストの例では、最初の行に結果があり、2 番目の行にフィルターがあり、フィルター内のペアの少なくとも 1 つに一致する結果のみを保持する必要があります。
(((john . ?x) (new-york . ?city)) ((mike . ?x) (chicago . ?city)) ((mary . ?x) (london . ?city)))
(((new-york . ?city)) ((chicago . ?city)))
(((john . ?x) (new-york . ?city)) ((mike . ?x) (chicago . ?city)) ((mary . ?x) (london . ?city)))
(((john . ?x) (air-hockey . ?game)) ((mike . ?x) (tennis . ?game)))
私が抱えている問題は、結果とフィルターの両方に可変数のパラメーターがあり、比較のために一度に 1 つの要素を取り出す方法がわからないことです。これは宿題なので、いくつかのヒントを使用できます。
最初の例では、都市がフィルターに一致するため、一致は john と mike を意味します。2 番目の例では、プレイする各ゲームを結果に追加するだけです。
最初の行の各エントリをチェックする必要がありますが、match
が機能するには、2 行目のエントリの少なくとも 1 つに対して #t を取得する必要があります。