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

时间:2019-07-15 15:55:04

标签: haskell

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

目前我已经尝试过了,其中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的新手,不确定还能尝试什么。

1 个答案:

答案 0 :(得分:1)

使用filter,而不是map

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