У меня есть функция, которая просто переключает порядок двух аргументов для любой функции F, как так:Каким будет тип функции, которая переключает порядок аргументов?
flippingArguments f a b = f b a
когда я проверяю тип flippingArguments с: т, я получаю следующее:
flippingArguments :: (t -> t1 -> t2) -> t1 -> t -> t2
который я не понимаю. Я бы предсказал следующее (что неправильно):
flippingArguments :: (t -> t1 -> t2) -> t -> t2 -> t1
Возможно, я непонимание, как читать спецификацию типа в Haskell? Я понимаю, что первые круглые скобки (t -> t1 -> t2) представляют аргументы flippingArguments, где t - f, t1 - a, t2 - b, а следующие три t -> t2 -> t1 - flippingArguments return значения, где просто порядок t1 и t2 перевернут. Но это неправильно.
Я прихожу из Java, поэтому простите меня, если я не понимаю, каково здесь значение возврата, его, вероятно, довольно рудиментарный материал. Чтобы повторить, может ли кто-нибудь объяснить мне типовое обозначение flippingArguments?
'flippingArguments' преобразует функцию fuction' a -> b -> c' в функцию 'b -> a -> c'. Тип '(t -> t1 -> t2) -> t1 -> t -> t2' эквивалентен с (t -> t1 -> t2) -> (t1 -> t -> t2)'. – freestyle
't2' - это тип _return_ входной функции, а не один из аргументов; это не будет аргументом в функции результата. –