Как вы определили myFlip f = ???،???،
, вы можете всякий раз, когда вы видите myFlip f
, где-то заменить его определением (если параметр называется чем-то отличным от f
, вам, конечно, придется его заменить).
Итак, определение flippedF = myFlip f
эквивалентно flippedF = \x y -> f y x
, или, как мы обычно пишем,
flippedF x y = f y x
(что на самом деле просто синтаксический сахар для лямбда-формулировки).Если вы затем оцените flippedF p q
, параметры x
и y
будут заменены на p
и q
, соответственно, так же, как и при любом другом вызове функции.
flippedF p q ≡ (let x = p; y = q in f y x)
≡ f q p