2012-04-23 2 views
1

У меня вопрос о домашнем задании, где я должен определить функцию, которая со входом в виде списка с меньшими списками целых чисел и суммирует числа в каждом из самых внутренних списков, а затем умножает полученные суммы друг с другом.Haskell Списки в списках

Мой код выглядит следующим образом и, очевидно, не работает, любая помощь будет принята с благодарностью :)

sumI :: [Int] -> Int 
sumI [] = 0 
sumI (x:xs) = x + sumI xs 

mapQ :: [[Int]] -> Int 
mapQ [] = [] 
mapQ xs = [product (sumI x) | x <- xs] 

ответ

1

Я думаю, вы почти там. Заменить последнюю строку на

mapQ xs = product [ sumI x | x <- xs] 
+1

... и удалить 'mapQ [] = []' :) –

+0

ах я уже пробовал, что один не работает спасибо, хотя –

+0

Замечательно, что работает приветствие riccardo! удалив эту линию, что она на самом деле делает? –

5

Как вопрос домашней работы - вот несколько советов.

  1. Вы можете использовать карту для применения функции к каждому члену списка. Поскольку список составлен из списков, подходящей функцией может быть sum

  2. Вы хотите превратить список в один номер. Я имею в виду, что у вас есть список сумм, которые вам нужны, и вы хотите их умножить, чтобы получить один номер. Это довольно распространено и обрабатывается одной из многих функций fold.

Дайте это попробовать.

Смежные вопросы