Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个家庭作业问题,我必须定义一个函数,该函数以列表形式输入,其中包含较小的整数列表,并将每个最里面的列表中的数字相加,然后将结果和相乘。
我的代码如下,显然不起作用,任何帮助将不胜感激:)
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]