2012-04-23 16 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関数の1つによって処理されます。

これらを試してください。