2012-04-23 79 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 [] = []':) – 2012-04-23 22:20:37

+0

啊我已經試過這一個不工作,雖然 – 2012-04-23 22:20:58

+0

奇妙的作品歡呼riccardo!通過刪除該行,它實際上做了什麼? – 2012-04-23 22:24:26

5

因爲這是一個作業問題 - 這裏有一些提示。

  1. 您可以使用映射將函數應用於列表的每個成員。由於列表是由列表組成的,因此合適的功能可能是sum

  2. 您想要將列表變成單個數字。我的意思是,你有一個你需要的金額清單,你想把它們放在一起得到一個單一的號碼。這很常見,並且由許多fold函數之一處理。

試試這些。