Haskell-组合列表元素-每次3个

Haskell-组合列表元素-每次3个,haskell,Haskell,所以。。。我有一张这样的清单 [[1,2,3], [4,5,6], [7,8,9], [10,11,12], [13,14,15], [16,17,18], [20,21,22], [23,24,25], [26,27,28]] 我想把这个清单变成: [[1,2,3,4,5,6,7,8,9], [10,11,12,13,14,15,16,17,18], [19,20,21,22,23,24,25,26,27]] 我已经坚持了好几个小时了。 在Haskell中有没有一种简单的方法可以做到这一点

所以。。。我有一张这样的清单

[[1,2,3], [4,5,6], [7,8,9], [10,11,12], [13,14,15], [16,17,18], [20,21,22], [23,24,25], [26,27,28]]
我想把这个清单变成:

[[1,2,3,4,5,6,7,8,9], [10,11,12,13,14,15,16,17,18], [19,20,21,22,23,24,25,26,27]]
我已经坚持了好几个小时了。 在Haskell中有没有一种简单的方法可以做到这一点?唯一的限制是我只能使用前奏功能

我想做什么: 连接成一个巨大的列表,然后使用“take 9”得到前9个元素,但是,我不知道如何进一步到9-18个元素,以此类推


哦,有一件事我忘了提,我不知道它是否有用,但在此之前我有一些代码,所以可以保证列表总是9的倍数。

您可以使用模式匹配获取三个子列表,并连接前三个子列表,然后递归2元组的第二项。这样看来:

split3 :: [[a]] -> [[a]]
split3 (xa:xb:xc:xs) = … : split3 …
split3 ls = ls

您需要填写两个部分。第一个处理输出的头部,而第二个对给定列表的尾部进行递归调用。

您尝试了什么,什么不起作用?尝试连接到单个列表中,然后使用“take 9”获得前9个元素,但是,我不知道如何进一步访问9-18个元素。哦,有一件事我忘了提,在这之前我有一些代码,所以可以保证列表总是9的倍数。take 9听起来不正确。根据您的描述,您希望一次获取外部列表中的3个元素。另一个提示:这里有一个名为drop的函数,它获取列表中的n个元素,并返回列表的其余部分。提示:在
drop 9
@pedrofurla上递归它没有显示,但问题提到先展平列表,然后使用
take 9