A Type of Programming
So, presumably, the dual of said covariant functor —let’s call it “ the contravariant”— is one that lifts a function into instead, arrow flipped. So, to sum up, s are covariant functors, as witnessed by the existence of their instance, but they are not contravariant functors at all, as witnessed by the impossibility of coming up with a instance for them. And it shouldn’t surprise us, considering how we saw in detail that except for their opposite argument positions, the types of and , as well as their laws, are exactly the same.
Source: atypeofprogramming.com