列表中的分组元素在Haskell
问题描述:
我想从[1,26,3,94,51,6,7,8,9,10,11,12,73,29,19,90,76,87,1]
列表中的分组元素在Haskell
转换列表,以[[1],[26,3],[94,51,6],[7,8,9,10],[11,12,73,29,19]]
并以此类推,直到在Haskell结束。 (我想组的元素在增加子列表的长度为序)
我是新来的Haskell请帮我
答
您可以接收一个列表,并返回一个列表你自己的递归函数首先我们需要take列表中的n个元素,因为我们称之为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]]
什么是分组标准?为什么'[26,3]'分组在一起?你有什么尝试?你卡在哪里? –