0

別のリストに含まれているあるリストの要素をフィルター処理 (削除) しようとしているという問題があります。どちらのリストにもタプルが含まれています。これを行う方法についての私の考えは、次のようなものです。

map solutions.filter (\(x,y) -> (x,y) notElem) forced --Trying to remove elements from solutions that are also in forced.

これがばかげた質問であれば申し訳ありません。私は Haskell を学んでいて、まだリスト フィルターに頭を悩ませています。

編集:実際には(x,*) and (*,y)、強制リストの (x,y) ペアを除くすべてを削除しようとしています

サンプル: 強制= [(A,1)] 解決策= [(A,1),(A,2),(A,3),(B,1),(B,2),(B,3)]私が作成したいのは、1 が A 以外のタスクに割り当てられている、または A が 1 以外のタスクに割り当てられているすべてのタプルを削除する新しいリストです。したがって、結果は [(A,1), (B,2),(B,3)]

4

1 に答える 1

2

Data.List には次(\\)演算子があります。

import Data.List ((\\))

a = [5, 6, 7, 8, 2, 1, 4]
b = [7, 2, 4]
a \\ b -- [5, 6, 8, 1]

タプルについては、次のことができると思います。

[(a, b) | (a, b) <- solutions, not $ any (\(c, d) -> (a == c && b /= d) || (a /= c && b == d)) forced]
于 2013-10-30T00:47:19.427 に答える