首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >透镜过滤复合材料结构

透镜过滤复合材料结构
EN

Stack Overflow用户
提问于 2013-10-25 14:07:23
回答 3查看 1.9K关注 0票数 10

我有一个[(a, Maybe b)],并希望获得一个[(a, b)],其中第二个元素被过滤掉的所有对。是否有一种简洁的方法来描述这种使用镜头的操作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-25 14:22:44

不如像这样

代码语言:javascript
复制
[('a',Just 1),('b',Nothing)]^..folded.aside _Just 

使用(^..)folded来自Control.Lens.Foldaside_Just来自Control.Lens.Prism

关键是aside,这是一个方便的函数,它从对对组件上的棱镜构建对的棱镜。

票数 13
EN

Stack Overflow用户

发布于 2013-10-25 15:01:29

尽管镜片精巧,但折叠很可能是简洁的标志:

代码语言:javascript
复制
[ (a, b) | (a, Just b) <- list ]

(更不用说可读性了)

票数 12
EN

Stack Overflow用户

发布于 2013-10-25 16:01:11

代码语言:javascript
复制
mapMaybe sequenceA :: [(a, Maybe b)] -> [(a,b)]

您需要导入Data.TraversableData.Maybe并拥有一个Traversable ((,) a)实例。我让读者来弄清楚这是怎么回事。

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

https://stackoverflow.com/questions/19592088

复制
相关文章

相似问题

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