The definition of a Functor requires that exactly one of the type variables be free, which is why it's written as `Either a` instead of `Either a b`. Any fields that are not `b` must be simply passed through as-is by fmap. There could be a separate functor that would fmap over the Left, but there isn't (in the base package anyhow).
There's a related Functor for `(,) a` where the Functor fmaps over the snd of the tuple, and the fst is left as-is.
fmap (+1) ('a', 2) == ('a', 3)
fmap (+1) (Right 2) == Right 3
fmap (+1) (Left 'a') == Left 'a'
Chris Done recently prototyped a fmap explorer that you might find useful:
-bob