首页 > 解决方案 > 根据三元组的第一个值删除列表中所有出现的三元组

问题描述

我在表单中有一个三元组列表,[(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 的新手,不确定还有什么可以尝试的。

标签: haskell

解决方案


使用filter,而不是map

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

推荐阅读