The only way to do this is to do it step by step.
:t combine
combine :: t1 -> (t1 -> t2 -> t) -> t2 -> t
>:t combine 9
combine 9 :: Num t1 => (t1 -> t2 -> t) -> t2 -> t
>:t f1
f1 :: Int -> (Integer -> r) -> r
>:t combine 9 f1
combine 9 f1 :: (Integer -> t) -> t
>:t f2
f2 :: Integer -> (String -> r) -> r
>:t combine 9 f1 f2
combine 9 f1 f2 :: (String -> r) -> r
At some point the t2 in combine becomes a function, which causes the rest of the type to change. I feel like combine was meant to be something else, f (g a) or g (f a) or something else, but I'm not sure what.