私にはやるべき宿題が少しあり、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 ]