Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 第一个元素相同的Haskell分裂元组数组_List_Haskell_Split_Tuples - Fatal编程技术网

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

List 第一个元素相同的Haskell分裂元组数组,list,haskell,split,tuples,List,Haskell,Split,Tuples,我在Haskell中有一个类似于 [([], "str1"), ([], "str2"), ([1], "ser1")] 我想把它分成两个元组的单独列表,每个元组的第一个元素是相同的,如下所示 [([], "str1"), ([], "str2")] [([1], "ser1")] 我一直在关注Data.List.Split的splitWhen函数,但我一直很难让ghc接受它的谓词,因为我认为它确实不是用来做这个的。我想你可以使用groupBy: > import Data.List

我在Haskell中有一个类似于

[([], "str1"), ([], "str2"), ([1], "ser1")]
我想把它分成两个元组的单独列表,每个元组的第一个元素是相同的,如下所示

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

我一直在关注
Data.List.Split
splitWhen
函数,但我一直很难让
ghc
接受它的谓词,因为我认为它确实不是用来做这个的。

我想你可以使用
groupBy

> import Data.List
> import Data.Function

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

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

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

我想您可以使用
groupBy

> import Data.List
> import Data.Function

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

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

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

嗯,我真的应该抓住这个。谢谢
groupBy(\x y->fst x==fst y)
可以在导入后替换为
groupBy(==)`on`fst)
。请注意,谓词可以使用Data.Function写入`fst上的
(==)`。继续,谢谢;我有一种感觉,它可能写得更简洁——将更新我的答案;-)嗯,我真的应该抓住这个。谢谢
groupBy(\x y->fst x==fst y)
可以在导入后替换为
groupBy(==)`on`fst)
。请注意,谓词可以使用Data.Function写入`fst
上的
(==)`。继续,谢谢;我有一种感觉,它可能写得更简洁——将更新我的答案;-)