Haskell在列表中列出

时间:2012-04-23 22:14:28

标签: list haskell

我有一个功课问题,我必须定义一个函数,它带有一个带有较小整数列表的列表形式的输入,并对每个最内层列表中的数字求和,然后将得到的总和与每个其他。

我的代码如下,显然不起作用,我们将非常感谢任何帮助:)

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

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

2 个答案:

答案 0 :(得分:5)

因为这是一个家庭作业问题 - 这里有几个提示。

  1. 您可以使用map将函数应用于列表的每个成员。由于列表由列表组成,因此合适的函数可以是sum

  2. 您想将列表转换为单个数字。我的意思是,你有一个你需要的总和列表,你想将它们相乘以得到一个数字。这很常见,由许多fold函数之一处理。

  3. 尝试一下。

答案 1 :(得分:1)

我觉得你快到了。用

替换最后一行
mapQ xs = product [ sumI x | x <- xs]