Haskell 将展开列表转换为长度为3的嵌套列表

Haskell 将展开列表转换为长度为3的嵌套列表,haskell,Haskell,给定Haskell中的扁平列表: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] n=3 如何将列表更改为: [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']] 最好是一个解决方案,其中n是一个变量,这是一个很好的示例,说明了如何将展开器用作: f n = unfoldr (\xs->if null xs then Nothing else Just (take n xs, drop n x

给定Haskell中的扁平列表:

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
n=3

如何将列表更改为:

[['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]

最好是一个解决方案,其中n是一个变量

,这是一个很好的示例,说明了如何将展开器用作:

f n = unfoldr (\xs->if null xs then Nothing else Just (take n xs, drop n xs))
请注意,它可以接受无限列表,如下所示:

take 4 $ f 3 [1..]
给予

角色

take 4 $ f 3 ['a'..]
给予


如果n不能被3整除呢?你可以假设列表的大小总是可以被n整除
take 4 $ f 3 ['a'..]
["abc","def","ghi","jkl"]