It’s even worse than that. Consider
data Foo a = Foo (a -> a)
This admits neither Functor nor Contravariant. Sadly all you can say is “If you can map, it’s a functor.”I always end up finding out more about any subject I actually publish a post about when people read it...