2

整数の小さなリストを持つリストの形式の入力を使用して、最も内側の各リストの数値を合計し、結果の合計を互いに乗算する関数を定義する必要がある宿題の質問があります。

私のコードは次のとおりであり、明らかに機能しません。どんな助けも大歓迎です:)

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

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

2 に答える 2

5

これは宿題の質問なので、ここにいくつかのヒントがあります。

  1. map を使用して、リストの各メンバーに関数を適用できます。リストはリストで構成されているため、適切な関数はsum

  2. リストを単一の数値に変換したい。つまり、必要な合計のリストがあり、それらを掛け合わせて単一の数値を取得したいとします。これは非常に一般的で、多くのfold関数の 1 つによって処理されます。

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

于 2012-04-23T22:21:46.253 に答える
1

私はあなたがほぼそこにいると思います。最後の行を次のように置き換えます

mapQ xs = product [ sumI x | x <- xs]
于 2012-04-23T22:19:15.580 に答える