述語関数に基づいてフィルタリングする必要がある項目のリストがあります。述部関数は、結果を正常に戻すために複数の引き数を必要とします。複数の引数を取る述語を持つフィルタ
myFilter :: Int -> [[String]] -> [String] -> [[String]]
[[String]]
をフィルタリングする必要がリストであり、そして人々の名前のリストです:
は、ここでフィルタリングされたリストを返す必要がある機能のために、私の関数型宣言です。人物の名前は、["FirstName", "MiddleName", "LastName"]
と表されます。
[String]
は、個人の名前です(例:["Bob", "Jane", "Alice"]
)。
私が必要としているのは、と少なくとも同じ名前のIntの番号を持たないすべての名前を除外することです。例えば
私は
myFilter 2 [["a", "b", "c"],["d", "e", "f"]] ["a", "f", "b"]
をコールした場合["d", "e", "f"]
は["a", "f", "b"]
と共通の少なくとも2名を持っていないので、私は
[["a", "b", "c"]]
になるだろう。
私はこれをユーザーが人のリストを管理できるようにするより大きなプログラムの一部として使用する予定です。このプログラムの機能の1つは、名前で検索し、ユーザーが入力した整数パラメーターに基づいて名前が一致するすべてのユーザーのリストを返します。
私はfilter
関数を知っていますが、述語関数の型はp :: Bool
である必要があります。あなたが見ることができるように私の述語はより複雑です。