首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haskell按fst分组列表元素

Haskell按fst分组列表元素
EN

Stack Overflow用户
提问于 2015-06-02 08:23:18
回答 1查看 686关注 0票数 4

我想写一个函数

代码语言:javascript
复制
group::[(Int, Int)]->[[(Int, Int)]]

它将元组列表中的元素分组为依赖于第一个坐标的子组,即:

代码语言:javascript
复制
group [(1,1),(1,2),(2,1),(2,2),(2,3)]

应导致

代码语言:javascript
复制
[[(1,1),(1,2)],[(2,1),(2,2),(2,3)]]

我想列表理解是正确的,但我有点卡住了..有人能提供建议/解决方案吗?

PS函数还可以将第一个坐标的最大值作为参数,如果有任何帮助的话。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-02 08:28:38

您可以使用groupBy来完成这个任务。

代码语言:javascript
复制
λ: groupBy (\x y -> fst x == fst y) [(1,1),(1,2),(2,1),(2,2),(2,3)]
[[(1,1),(1,2)],[(2,1),(2,2),(2,3)]]

on函数在这里非常有用,可以在不混淆代码的情况下稍微缩短代码:

代码语言:javascript
复制
λ: groupBy ((==) `on` fst) [(1,1),(1,2),(2,1),(2,2),(2,3)]
[[(1,1),(1,2)],[(2,1),(2,2),(2,3)]]
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30590909

复制
相关文章

相似问题

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