Mithilfe der map zu ersetzen Elemente einer Liste mit (x-y)*(x-y), wobei y das erste element

Ich habe ein bisschen Hausaufgaben zu tun, und ich bin ein absoluter Neuling auf Haskell. Die Frage, die ich habe Probleme mit ist das schreiben einer Funktion, die eine gegebene ganze Zahl x und eine Liste von ganzen zahlen gelten (x-y)*(x-y) auf jedes element in der Liste und die Ausgabe der neuen Liste, mit y wird jedes element der Eingangs-Liste.

Habe ich eine sehr grobe Idee, die ich mit der map Funktion, aber ich bin mir nicht sicher wie Sie gehen über es.

Schaue ich Beispiele für die Quadratur jedes element in einer Liste und die Art verstehen, wie das funktioniert, aber wie würde ich die Umsetzung der (x-y)*(x-y) mit y wird das aktuelle element komplett verwirrt mich.

squares :: [Int] -> [Int]
squares (x:xs) = x * x : squares xs
squares [] = []

die genaue Frage, die ich mir gesetzt worden ist,

Schreiben Sie eine Funktion rela nimmt als Argumente ein integer - x und eine Liste von Ganzzahlen. Es gibt eine ähnliche Liste, aber wo jedes element y wurde ersetzt durch (x-y)*(x-y) z.B.

Main> rela 2 [3,5,7]
[1,9,25]

Ich habe es geschafft es zum laufen zu bringen nach dem Lesen durch einige Bücher, aber der code, den ich gemacht habe, findet sich das erste element in der Liste. Keine Erklärung warum?

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 ]
Schreibe einen Kommentar