Actually it is trickier than you'd think.
With "Functor" you can pretend that contravariance doesn't exist.
With both profunctor and contravariant it is necessarily part of the puzzle.
data Compose f g a = Compose (f (g a))
* are both f and g contravariant leading to a functor?
* is f contravariant and g covariant leading to a contravariant functor?
* is f covariant and g contravariant leading to a contravariant functor?
data Wat p f a b = Wat (p (f a) b)
is p a Profunctor or a Bifunctor? is f Contravariant or a Functor?
-Edward