给出Haskell中的扁平化列表:
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
和n=3
如何将列表更改为:
[['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]
最好是n
是变量
答案 0 :(得分:3)
这是一个很好的示例,展示了如何将unfoldr用作:
f n = unfoldr (\xs->if null xs then Nothing else Just (take n xs, drop n xs))
请注意,它可以接受以下形式的无限列表:
take 4 $ f 3 [1..]
给予
[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
对于字符
take 4 $ f 3 ['a'..]
给予
["abc","def","ghi","jkl"]