The problem you are facing is associated with proper associativity ->. Consider the type <*>:
<*> :: (Applicative f) => f (a -> b) -> f a -> f b
With f aequal r -> a, we have
<*> :: f (a -> b) -> f a -> f b
:: (r -> (a -> b)) -> (r -> a) -> (r -> b)
:: (r -> a -> b) -> (r -> a) -> (r -> b) -- This is the key line
Note that it went from (r -> (a -> b)) -> other stuffto (r -> a -> b) -> other stuff, not r -> (a -> b) -> other stuff. We can remove the internal brackets since they are to the right of the arrow, but we cannot remove the external brackets because they are to the left of the arrow.
(+) :: (Num a) => a -> a -> a. <*>, r a, b, . ,
(<*>) (+) :: (Num a) => (a -> a) -> (a -> a)
:: (Num a) => (a -> a) -> a -> a
, , .