我想从[1,26,3,94,51,6,7,8,9,10,11,12,73,29,19,90,76,87,1]
到[[1],[26,3],[94,51,6],[7,8,9,10],[11,12,73,29,19]]
依此类推,直到haskell结束。 (我试图按子列表长度的递增顺序对元素进行分组)
我是哈斯克尔的新手,请帮帮我
答案 0 :(得分:1)
您可以创建自己的递归函数来接收列表并返回列表列表,首先我们需要take列表中的元素,因为我们称之为take n xs
,之后我们需要为了这个元素,我们需要调用mySplit n+1
并删除我们合并到列表中的元素,因此我们只需要call drop n xs
drop。
mySplit :: Int -> [a] -> [[a]]
mySplit n [] = []
mySplit n xs = (take n xs):(mySplit (n + 1) (drop n xs))
ghci> mySplit 1 [1,26,3,94,51,6,7,8,9,10,11,12,73,29,19,90,76,87,1]
[[1],[26,3],[94,51,6],[7,8,9,10],[11,12,73,29,19],[90,76,87,1]]