我有一个功课问题,我必须定义一个函数,它以带有较小整数列表的列表形式输入,并对每个最内层列表中的数字求和,然后将得到的和相乘 .
我的代码如下,显然不起作用,任何帮助将不胜感激:)
sumI :: [Int] -> Int sumI [] = 0 sumI (x:xs) = x + sumI xs mapQ :: [[Int]] -> Int mapQ [] = [] mapQ xs = [product (sumI x) | x <- xs]
因为这是一个家庭作业问题 - 这里有几个提示 .
您可以使用map将函数应用于列表的每个成员 . 由于列表由列表组成,因此合适的函数可能是 sum
sum
您想将列表转换为单个数字 . 我的意思是,你有一个你需要的总和列表,你想将它们相乘以得到一个数字 . 这很常见,由许多 fold 函数之一处理 .
fold
试一试 .
我想你差不多了 . 用最后一行替换
mapQ xs = product [ sumI x | x <- xs]
2 回答
因为这是一个家庭作业问题 - 这里有几个提示 .
您可以使用map将函数应用于列表的每个成员 . 由于列表由列表组成,因此合适的函数可能是
sum
您想将列表转换为单个数字 . 我的意思是,你有一个你需要的总和列表,你想将它们相乘以得到一个数字 . 这很常见,由许多
fold
函数之一处理 .试一试 .
我想你差不多了 . 用最后一行替换