I\'m trying to understand why the type of:
(flip .) is: (a -> a1 -> b -> c) -> a -> b -> a1 -> c
First of all, the type of:
(flip .)
is (.) flip
, so:
(.) :: (bx -> cx) -> (ax -> bx) -> ax -> cx
flip :: (ay -> by -> cy) -> by -> ay -> cy
(.) flip
,
bx
is ay -> by -> cy
cx
is by -> ay -> cy
(ax -> (ay -> by -> cy)) -> ax -> (by -> ay -> cy)
,(ax -> ay -> by -> cy) -> ax -> by -> ay -> cy
,(flip .) :: (a -> a1 -> b -> c) -> a -> b -> a1 -> c
.