我有一些功课要做,我是Haskell的全新手.我遇到问题的问题是编写一个函数,当给定一个整数x和整数列表时,该函数应用于列表中的(x-y)*(x-y)每个元素并输出新列表,y作为输入列表的每个元素.
我有一个非常粗略的想法,我将不得不使用该map功能,但我不确定如何去做.
我一直在寻找的例子在列表中每平方元素和一种理解是如何工作的,但我将如何实现(x-y)*(x-y)与y为当前元素完全令我感到困惑.
squares :: [Int] -> [Int]
squares (x:xs) = x * x : squares xs
squares [] = []
Run Code Online (Sandbox Code Playgroud)
我设定的确切问题是,
编写一个函数
rela,它将整数x和整数列表作为参数.它返回一个类似的列表,但是每个元素y都被替换为(x-y)*(x-y),例如Run Code Online (Sandbox Code Playgroud)Main> rela 2 [3,5,7] [1,9,25]
在阅读了一些书之后,我已经设法让它工作了,但是我制作的代码错过了列表中的第一个元素.任何解释为什么?
equation1 :: Int -> Int -> Int
equation1 x y = (x-y)*(x-y)
rela :: Int -> [Int] -> [Int]
rela x [] =[]
rela x (y:ys) = [ equation1 x y …Run Code Online (Sandbox Code Playgroud) 我有一个功课问题,我必须定义一个函数,它以带有较小整数列表的列表形式输入,并对每个最内层列表中的数字求和,然后将得到的和相乘.
我的代码如下,显然不起作用,任何帮助将不胜感激:)
sumI :: [Int] -> Int
sumI [] = 0
sumI (x:xs) = x + sumI xs
mapQ :: [[Int]] -> Int
mapQ [] = []
mapQ xs = [product (sumI x) | x <- xs]
Run Code Online (Sandbox Code Playgroud)