繁体   English   中英

Haskell - 组合列表元素 - 3 次

[英]Haskell - Combining List Elements - 3 at time

所以...我有一个这样的清单

[[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 个元素,但是,我不知道如何将 go 进一步扩展到 9-18 个元素等等。

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

您可以采用模式匹配的三个子列表并将前三个连接起来,然后递归到 2 元组的第二项。 因此,这看起来像:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM