You probably want:
{-# LANGUAGE DeriveFunctor #-}
data T1 a = T1 a
deriving Functor
data T2 a = T2 a
deriving Functor
Regarding why there is no default implementation for a functor: your sentence only works if it fis an identical functor (up to isomorphism). That is, it works on
data F a = F a
but he will not work on
data F a = F a a
or
data F a = F (Int -> a) [a] (Maybe a)
fmap s.
fmap, , , , , , fmap.
, derive Functor, .