将列表拆分为不均匀的子列表

时间:2015-11-21 21:15:00

标签: haskell

我试图将50个项目的列表拆分成不同大小的子列表;例如3 of 10,4 of 5。

我尝试使用take执行此操作,但这只是重复使用列表中的前几个项目,而不是按索引移动。

有没有人对如何做到这一点有任何建议?或者可以将我链接到Prelude / Data.List函数,这可能对我有所帮助。 (我环顾四周,但我很难找到任何东西。)

1 个答案:

答案 0 :(得分:1)

的合适组合
splitAt :: Int -> [a] -> ([a], [a])

snd :: (a, b) -> b

应该这样做。

编辑:

splitUp :: [Int] -> [a] -> [[a]]
splitUp [] xs = [xs]
splitUp _ [] = []
splitUp (l:ls) xs = let (a,b) = splitAt l xs in a : splitUp ls b