Haskell 拆分第一个元素相同的元组数组

Haskell split tuple array where first elements are the same

我在 Haskell 中有一个列表,其形式类似于

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

我想把它分成单独的二元组列表,其中每个元组的第一个元素是相同的,就像这样

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

我一直在关注 Data.List.SplitsplitWhen 函数,但我一直无法让 ghc 接受它的谓词,因为我确实收集了它不是为了那样做。

我想你可以使用 groupBy:

> import Data.List
> import Data.Function

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

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

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