Вам следует использовать лямбда-функцию, чтобы увидеть, как это работает, давайте начнем с использования вспомогательной функции для отображения f в некотором списке.
map helper [1, 2, 3] where
helper x = f x y z
В Haskell есть два синтаксиса для функций, поэтому давайте используем лямбда-синтаксис для определения нашей вспомогательной функции:
map helper [1, 2, 3] where
helper = \x -> f x y z
используя лямбда-синтаксис, нам не нужно давать явное имя нашей вспомогательной функции, это может быть просто анонимная функция, которую мы отображаем на вход
map (\x -> f x y z) [1, 2, 3]
Так что теперь вы можете сказать
mapF y z = map (\x -> f x y z) [1,2,3]
Но, вероятно, вы не хотите, чтобы x
были 1, 2 и 3, вы хотите, чтобы это был список
Вы передаете в качестве аргумента mapF
. Так что вам нужно дать это другое имя:
mapF xs y z = map (\x -> f x y z) xs
По соглашению Haskell s
используется в качестве суффикса для переменных, которые содержат списки или другие контейнеры. Таким образом, если одно значение равно x
, то их список равен xs