我有一些功课要做,而且我是 Haskell 的新手。我遇到的问题是编写一个函数,当给定一个整数x
和一个整数列表时,它适用(x-y)*(x-y)
于列表中的每个元素并输出新列表,y
作为输入列表的每个元素。
我有一个非常粗略的想法,我将不得不使用该map
功能,但我不确定如何去做。
我一直在查看对列表中的每个元素进行平方的示例,并且有点理解它是如何工作的,但是作为当前元素,我将如何实现它(x-y)*(x-y)
完全y
让我感到困惑。
squares :: [Int] -> [Int]
squares (x:xs) = x * x : squares xs
squares [] = []
我提出的确切问题是,
编写一个函数,它接受一个整数和一个整数列表
rela
作为参数。x
它返回一个类似的列表,但是每个元素y
都被替换为(x-y)*(x-y)
,例如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 | y <- ys ]