f :: a -> b g :: b -> c g . f :: a -> c
(*) :: Int -> (Int -> Int) (*2) :: Int -> Int
b = Int -> Int
b = Int
(*) :: Num x => x -> (x -> x) (*2) :: Num x => x -> x
a = Num x => x b = Num (x -> x), Num x => x -> x c = Num (x -> x), Num x => x -> x
Num (x->x), Num x => (x -> x) -> (x -> x)
x -> x
flip id
flip f x y = f y x id x = x