Haskell拆分元组数组,其中第一个元素是相同的

时间:2015-03-28 21:39:36

标签: list haskell split tuples

我在Haskell中有一个类似于

的表单
[([], "str1"), ([], "str2"), ([1], "ser1")]

我希望将它拆分为单独的2元组列表,其中每个元组的第一个元素是相同的,就像这样

[([], "str1"), ([], "str2")]
[([1], "ser1")]

我一直在关注Data.List.Split的{​​{1}}函数,但我一直无法让splitWhen接受谓词,因为我收集它真的不是'我打算这样做。

1 个答案:

答案 0 :(得分:5)

我认为你可以使用groupBy

> import Data.List
> import Data.Function

> let xs = [([], "str1"), ([], "str2"), ([1], "ser1")]

> groupBy ((==) `on` fst) xs

[[([],"str1"),([],"str2")], [([1],"ser1")]]