我有一个[(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的新手,不确定还能尝试什么。
答案 0 :(得分:1)
使用filter
,而不是map
:
removeElem :: String -> [(String, String, Int)]
removeElem x = filter (\(a,_,_) -> x /= a)