首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据元素筛选3(或更高)-tuples的列表

根据元素筛选3(或更高)-tuples的列表
EN

Stack Overflow用户
提问于 2018-06-28 11:42:48
回答 2查看 151关注 0票数 1

假设我有一个三元组的列表,比如:

[(1,2,3),(4,5,6),(7,8,9)]

如果我想找到每个项目,其中的第一个元素是filter,那么通过这些方法实现1的方法是什么。filter ((==1).fst)不能被使用,因为元组的长度不等于2。我有一些想法,但我似乎无法将它们改进为可行的代码,所以我想看看是否有一个更好的解决方案--一个更熟悉这种语言的人。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-28 11:45:44

对于静态类型,最简单的方法可能是手动键入所有逗号:

代码语言:javascript
复制
filter (\(x,_,_) -> x == 1) [(1,2,3),(4,5,6),(7,8,9)]

(您可以尝试自动化这一点,例如将fst的泛型版本编写为类方法,但随后需要手动声明每个元组大小都是该类的一个实例。)

票数 1
EN

Stack Overflow用户

发布于 2018-07-08 10:51:22

你可以使用镜头库,它提供了一个镜头来操作元组。

代码语言:javascript
复制
import Control.Lens

filter ((== 1) . (^. _1)) [(1, 2, 3), (4, 5, 6), (7, 8, 9)]

镜头使用的类型类如Field1 Field2 ..。使上面的代码成为可能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51082067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档