2015-04-16 3 views
3

Можно ли переписать это с помощью функций библиотеки?Как я могу разбить список на куски, используя span?

chunks :: ([a] -> ([a], [a])) -> [a] -> [[a]] 
chunks f [] = [] 
chunks f xs = case c of 
    [] -> cs 
    ys -> ys : cs 
    where 
    (c, rest) = f xs 
    cs = chunks f rest 

Если я дам ему span -кака функции, которая всегда принимает, по меньшей мере, один элемент из списка, он будет потреблять список и возвращает список с подсписками элементов, которые были разорваны каждый раз, когда функция назывался.

+2

Вы могли бы также, как [раскол] (HTTP: //hackage.haskell .org/package/split), который предлагает множество способов списков фрагментов и кубиков ... или одну из многих библиотек-разборчиков синтаксического анализа. –

ответ