Why does the 2-tuple Functor instance only apply the function to the second element?
Let me answer this with a question: Which output do you expect for: main = print $ fmap (*2) (“funny”,2) You can have something as you want (using data Pair a = Pair a a or so), but as (,) may have different types in their first and second argument, you are out of luck.