haskell - 根据三元组的第一个值删除列表中所有出现的三元组
问题描述
我在表单中有一个三元组列表,[(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)
推荐阅读
- java - 使用 TestNG 管理数千个测试脚本
- postgresql - 多个窗函数的累积和
- google-apps-script - 所选数据范围内没有数据时不发送电子邮件
- typescript - 使用编译语言(打字稿)开发环境的 docker
- c# - 当我使用管道在 azure devops 上构建 csproj 文件时,为什么没有创建 bin 和 obj 文件夹?
- git - 下载 Azure DevOps Git Monorepo 下特定目录的源文件
- angular - 空结果的角度“包含”
- laravel - 对同一列中具有相同值的行进行分组
- splunk - Splunk:使用 spath 和 groupby 的嵌套字段的 tstat 计数不返回结果
- java - 在 OkHttp 中等效的 setEntity - Android