Учитывая следующее семейство типов (предполагаемое для отражения изоморфизма A × 1 ≅ A)
type family P (x :: *) (a :: *) :: * where
  P x () = x
  P x a  = (x, a)
и тип данных, определенный в терминах
data T a = T Integer (P (T a) a)
возможно ли хаккером какого-либо типа написать экземпляр Functor для последнего?
instance Functor T where
  fmap f = undefined  -- ??
Интуитивно понятно, что делать в зависимости от типа f, но я не знаю, как выразить это в Haskell.
