
12 Jun
2018
12 Jun
'18
12:12 p.m.
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 "(.)"?