Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 在haskell中对列表中的元素进行分组_List_Haskell - Fatal编程技术网

List 在haskell中对列表中的元素进行分组

List 在haskell中对列表中的元素进行分组,list,haskell,List,Haskell,我想将列表从[1,26,3,94,51,6,7,8,9,10,11,12,73,29,19,90,76,87,1] 直到哈斯凯尔结束。(我试图按子列表长度的递增顺序对元素进行分组) 我是haskell的新手,请帮助我您可以创建自己的递归函数来接收列表并返回列表列表,首先我们需要从列表中提取n个元素,我们称之为获取nxs,之后,我们需要将该元素与其余元素合并,为此,我们需要调用mysplitn+1并删除合并到列表中的元素,因此我们只需要调用drop nxs 分组标准是什么?为什么将[26,3]组合

我想将列表从
[1,26,3,94,51,6,7,8,9,10,11,12,73,29,19,90,76,87,1]

直到哈斯凯尔结束。(我试图按子列表长度的递增顺序对元素进行分组)


我是haskell的新手,请帮助我

您可以创建自己的递归函数来接收列表并返回列表列表,首先我们需要从列表中提取n个元素,我们称之为
获取nxs
,之后,我们需要将该元素与其余元素合并,为此,我们需要调用
mysplitn+1
并删除合并到列表中的元素,因此我们只需要
调用drop nxs


分组标准是什么?为什么将
[26,3]
组合在一起?你试过什么?你被困在哪里了?谢谢。是否有任何内置函数可以执行相同的操作?是的,您可以将foldr与lambda一起使用。将使此代码更有效率,这样您就不必使用
take
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]]