Haskell's notion of Functor is in fact somewhat arbitrary from the standpoint of mathematical functors. It's not at all arbitrary from the standpoint of the general variety of type system Haskell uses. I'd call it a "deep design choice" rather than a "technical limitation". I think the newtype I gave for Flip and the type family I gave for FlipF are the best you're ever likely to see. I do hope that the status of type families will improve somewhat in the future (e.g., I'd love to be able to map a type family over a list of types), but that won't get you the sorts of instances you're dreaming of.