Мне интересно выражение flip id
(Это не домашнее задание: я нашел его в документации getOpt
).
Интересно, почему он имеет этот тип:
Prelude> :t (flip id)
(flip id) :: b -> (b -> c) -> c
Например, (flip id) 5 (+6)
дает 11
.
Я знаю, почему id (+6) 5
дает 11, но я не "получаю" flip id
вещь.
Я попытался понять это сам, используя ручку и бумагу, но не мог. Может ли кто-нибудь объяснить это мне? Я имею в виду, как flip id
появился тип b -> (b -> c) -> c
?