I'm reading the "Haskell programming" book and in chapter 16 about functors they combine two "fmap" with the "(.)" function.I really don't understand how the type of "fmap . fmap" is "(Functor f2, Functor f1) => (a -> b) -> f1 (f2 a) -> f1 (f2 b)".
The thing that really freaks me out is that I thought that "(.)" arguments are ONLY two unary function.
Maybe there is some curring magic underline, there is someone that can explain to me how the type of "fmap . fmap" is derived from the type of "fmap" and "(.)"?