The text says "Just like function application at the value level, types for Haskell functions are also left-to-right associative, so instead of Int → (Int → Int) we can simply write “Int → Int → Int”.
I think that this is backwards, and should instead say "Unlike function application at the value level, types for Haskell functions are right-to-left associative, so instead of Int → (Int → Int) we can simply write “Int → Int → Int”.
(because if it were left-to-right associative, “Int → Int → Int” would be the same as “(Int → Int) → Int”)