Haskell новичок здесь. Я проходил через Учиться вам haskell, и натолкнулся на это определение функции флип.
flip' :: (a -> b -> c) -> (b -> a -> c)
flip' f = g
where g x y = f y x
Чего я не понимаю, откуда взялись х и у? Я имею в виду, что подпись говорит мне, что flip'
- это функция, которая принимает функцию (с двумя параметрами) и возвращает функцию (опять же с двумя параметрами).
Если я понимаю это право, когда пишу функцию, которая выглядит как
foo :: (a -> b) -> a -> b
foo f x = f x -- applies the function f on x
Но тогда в этом случае я передаю параметр явно [ie x
], и поэтому я могу получить к нему доступ в теле функции. Итак, как получилось, что функция flip'
может получить доступ к параметрам x и y?