Travailler sur une liste de listes en Haskell

Je suis un peu débutant à Haskell donc, je me bats un peu avec le type strict des trucs, je me demandais si quelqu'un peut m'aider avec une fonction je suis en train de construire. Fondamentalement, il faut une liste de listes, par exemple:

[[1,2,3], [7,6,8], [0,3,4]]

et les ajoute dans une liste de la traduction de la plus tard de la liste par le nombre de postes, il est long. Ainsi, travailler sur la liste d'exemples, il serait effectivement faire quelque chose comme:

foldl (zipWith +) [] [[1,2,3],[0,7,6,8],[0,0,0,3,4]]

Voici ma fonction actuelle (qui est le type d'erreurs):

    addLists :: [[Integer]] -> [Integer]
    addLists [[]] = []
    addLists [[x]] = [x]
    addLists [x:xs] = zipWith (+) [x] ([0]++ (addLists xs))
Veuillez préciser ce que vous souhaitez que le résultat de addLists [[1,2,3], [7,6,8], [0,3,4]]. Il n'est pas évident de votre question.
Il semble que vous avez édité votre question de le préciser, mais je crains que je ne comprends toujours pas. Quel doit être le résultat de addLists [[1,2,3], [7,6,8], [0,3,4]] ressembler? L'exemple que vous avez donné, foldl (zipWith +) [] [[1,2,3],[0,7,6,8],[0,0,0,3,4]] n'est pas de type vérifier, et je ne peux pas comprendre ce que vous aviez l'intention de faire.
Voulez-vous le résultat à [1, 2+7, 3+6+0, 8+4, 4] = [1,9,9,12,4]?
Oups, signifiait [1,9,9,11,4]?
Désolé, la sortie doit être [1, 2+7, 3+6+0, 8+3, 4]

OriginalL'auteur Nathan Edwards | 2012-10-31