我在Haskell中有一个类似于
的表单[([], "str1"), ([], "str2"), ([1], "ser1")]
我希望将它拆分为单独的2元组列表,其中每个元组的第一个元素是相同的,就像这样
[([], "str1"), ([], "str2")]
[([1], "ser1")]
我一直在关注Data.List.Split
的{{1}}函数,但我一直无法让splitWhen
接受谓词,因为我收集它真的不是'我打算这样做。
答案 0 :(得分:5)
我认为你可以使用groupBy
:
> import Data.List
> import Data.Function
> let xs = [([], "str1"), ([], "str2"), ([1], "ser1")]
> groupBy ((==) `on` fst) xs
[[([],"str1"),([],"str2")], [([1],"ser1")]]