2つのリストを指定すると、両方のリストからcommenにある要素を削除する関数を作成しようとしています。私はこれ以上私の頭を壊してきましたが、まともな解決策を考え出すことができませんでした。例えば2つのリストからcommen要素を削除する
、与えられた:
` let a = [1,2,3,4,5] `
` let b = [1,3,5,7,9] `
` f a b `
を次にFのようなものを返す必要があります:あなたは述語not.flip (elem)
としてリストをフィルタリングすることができ
` ([2,4], [7,9]) `
問題を小さなものに分割しようとしましたか?どこに問題がありますか?私はこれが宿題だと思っていますが、実際にはこの問題に遭遇した場合、まず「Set」か他のデータ構造が適切かどうかを検討してください。 – jberryman
これは実際には実際には壊れています。一つのリストを他のリストよりもループさせてから、[Integer]リストを返す必要があるのは難しいです。私はしばしば、[[Integer]]リストを取得してしまい、リストごとに1つの要素しか削除しませんでした。リストやタプルの他に、Haskellの他のデータ構造を使っていないので、私は一見して、より良い仕事を見て、チップのおかげです。 – Henk
ここでは、問題をより小さな部分に分割する例を挙げます。以下の関数を定義することができます: 'unionLists :: [Int] - > [Int] - > [Int]'(これは'delete :: Int - > [Int] - > [Int]'(最初のパラメータとして渡された要素が削除されたリストを返します)。次に、unionListsを定義するのに問題がある場合は、 'elem :: Int - > [Int] - > Bool'と' filter'、または 'merge'と' sort '賢い気分。 – jberryman