根据三元组的第一个值删除列表中出现的所有三元组



我有一个[(String, String, Int)]形式的三元组列表,我正在尝试删除列表中在第一个字符串位置具有相同值的所有元素。

目前我已经尝试过这个,其中 testData 是我的三元组列表。

removeElem :: String -> [(String, String, Int)]
removeElem x = map (p@(a, b, c) -> if (a == x) then head (delete (a, b, c) testData) else p) testData

如果testData = [("Hello", "Yes", 50), ("Goodbye", "Sky", 80), ("Hello", "Apple", 100)]我希望函数删除所有以"Hello"作为其第一个值的三元组。我编写的函数仅删除它找到的匹配的第一个三元组。

我是Haskell的新手,不确定还有什么可以尝试的。

使用 filter ,而不是map

removeElem :: String -> [(String, String, Int)]
removeElem x = filter ((a,_,_) -> x /= a)

最新更新