回答

5

有一个在Data.List.SplitchunksOf功能:

chunksOf 2 [0, 1, 2, 3] -- [[0, 1], [2, 3]] 

另外,我们已经有splitAtprelude,与chunksOf可以轻松实现:

chunksOf :: Int -> [a] -> [[a]] 
chunksOf n [] = [] 
chunksOf n xs = let (as, bs) = splitAt n xs in as : chunksOf n bs 
+0

注意到,在旧版本的GHC,你必须“阴谋分裂安装”(我认为前7.6) – epsilonhalbe

+0

为什么啊,为什么不前奏等效?如果我正在写一些快速和小型的东西,我不想依赖于拆分包。 –

3

可能会稍微简单一点,阅读时采用拖放和不需要库。

chunksOf :: Int -> [a] -> [[a]] 
chunksOf _ [] = [] 
chunksOf n xs = take n xs : chunksOf n (drop n xs) 
相关问题