我试图将50个项目的列表拆分成不同大小的子列表;例如3 of 10,4 of 5。
我尝试使用take
执行此操作,但这只是重复使用列表中的前几个项目,而不是按索引移动。
有没有人对如何做到这一点有任何建议?或者可以将我链接到Prelude / Data.List函数,这可能对我有所帮助。 (我环顾四周,但我很难找到任何东西。)
答案 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