Разбить список и составить сумму из подсписка?

Я ищу решение для моего класса на Haskell.

У меня есть список номеров, и мне нужно вернуть сумму для каждой части списка. Части делятся на 0. Мне нужно использовать функцию FOLDL.

Пример:
первоначальный список: [1,2,3,0,3,4,0,5,2,1]
подсписок [[1,2,3], [3,4], [5,2,1]]
результат [6,7,7]

У меня есть функция для поиска 0 в начальном списке:

findPos list = [index+1 | (index, e) <- zip [0..] list, e == 0] 

(возвращает [4,6] для начального списка из примера)

и функция для создания СУММ с FOLDL:

sumList list = foldl (+) 0 list

Но мне совершенно не удалось собрать это вместе: /

---- МОЕ РЕШЕНИЕ
В конце концов, я нашел что-то совершенно другое, что вы, ребята, предложили.
Мне потребовался целый день, чтобы сделать это: /

groups :: [Int] -> [Int]
groups list = [sum x | x <- makelist list]

makelist :: [Int] -> [[Int]]
makelist xs = reverse (foldl (\acc x -> zero x acc) [[]] xs)  

zero :: Int -> [[Int]] -> [[Int]]
zero x acc | x == 0 = addnewtolist acc
           | otherwise = addtolist x acc

addtolist :: Int -> [[Int]] -> [[Int]]
addtolist i listlist = (i : (head listlist)) : (drop 1 listlist)

addnewtolist :: [[Int]] -> [[Int]]
addnewtolist listlist = [] : listlist

Ответы на вопрос(3)

Ваш ответ на вопрос