[英]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.