Пытается написать функцию в Haskell, которая связывает список xs в списки размера n, например. результат bundle 3 [1..10]
должен быть [[1,2,3],[4,5,6],[7,8,9],[10]]
.Как объединить значения в списки заданных длин в Haskell?
Я знаю, что тип должен быть
bundle :: Int -> [a] -> [[a]]
и должен удовлетворять что-то вроде
concat $ bundle n xs == xs
length xss > 1 ==> all (\xs -> n == length xs) (init xss)
, но когда я приезжаю на самом деле попытаться осуществить его я застрял. Я предполагаю, что мне нужно использовать foldl, но не могу придумать, какую функцию применять.
Try с собственным рекурсии первого, а затем использовать 'foldl' (если применимо на всех). – Bergi
Вы можете использовать 'unfoldr' вместе с' splitAt'. – Lee
http://hackage.haskell.org/package/split-0.2.3.1/docs/Data-List-Split.html#v:chunksOf – melpomene