<div dir="ltr">I'm reading the "Haskell programming" book and in chapter 16 about functors they combine two "fmap" with the "(.)" function.<div>I really don't understand how the type of "fmap . fmap" is "(Functor f2, Functor f1) => (a -> b) -> f1 (f2 a) -> f1 (f2 b)".</div><div><br></div><div>The thing that really freaks me out is that I thought that "(.)" arguments are ONLY two unary function.</div><div>Maybe there is some curring magic underline, there is someone that can explain to me how the type of "<span class="inbox-inbox-gr_ inbox-inbox-gr_271 inbox-inbox-gr-alert inbox-inbox-gr_gramm inbox-inbox-gr_inline_cards inbox-inbox-gr_run_anim inbox-inbox-Style inbox-inbox-multiReplace" id="inbox-inbox-271" style="display:inline;border-bottom:2px solid transparent;background-repeat:no-repeat"><span class="inbox-inbox-gr_ inbox-inbox-gr_261 inbox-inbox-gr-alert inbox-inbox-gr_spell inbox-inbox-gr_inline_cards inbox-inbox-gr_disable_anim_appear inbox-inbox-ContextualSpelling inbox-inbox-ins-del inbox-inbox-multiReplace" id="inbox-inbox-261" style="display:inline;border-bottom:2px solid transparent;background-repeat:no-repeat;color:inherit;font-size:inherit">fmap</span> .</span> <span class="inbox-inbox-gr_ inbox-inbox-gr_276 inbox-inbox-gr-alert inbox-inbox-gr_spell inbox-inbox-gr_inline_cards inbox-inbox-gr_run_anim inbox-inbox-ContextualSpelling inbox-inbox-ins-del inbox-inbox-multiReplace" id="inbox-inbox-276" style="display:inline;border-bottom:2px solid transparent;background-repeat:no-repeat">fmap</span>" is derived from the type of "fmap" and "(.)"?<br></div><br class="inbox-inbox-Apple-interchange-newline"></div>