【发布时间】:2016-07-17 23:04:53
【问题描述】:
我有一个这样的列表:
[(1,[2]), (1,[3]), (1,[4]), (2,[1]), (2,[2]), (3,[1])]
我想要的是一个从列表中的第一个元素开始的函数,如果它在列表中找到具有相似元组 (fst) 的任何其他元素,那么它将找到的元素的 (snd) 连接到(snd) 第一个元素。在上面显示的示例中,最终结果将是以下列表:
[(1,[2,3,4]), (2,[1,2]), (3,[1])]
我尝试了很多选项,但都没有成功。有什么建议?
谢谢
【问题讨论】:
-
你试过什么?您可能想使用
Data.List.groupBy和Data.Function.on来玩groupBy ((==) `on ` fst) -
谢谢,但没有给出我想要的结果。运行您建议的函数在以下列表上方的同一列表中给了我:[[(1,[2]),(1,[3]),(1,[4])],[(2,[1] ),(2,[2])],[(3,[1])]] 而我想要的是: [(1,[2,3,4]), (1,[1,2]), ( 3,[1])]
-
这个想法显然是你从那里开始,看看你是否可以自己完成它......但很遗憾你在下面有 2 个剧透;)
-
呵呵。你说的对。谢谢卡斯滕
标签: haskell tuples concatenation