Every arrow (in ) is mapped to an arrow (in ).
Note that Cofunctor is a misnomer for contravariant functor, as the dual of a functor is a functor.
class Contravariant f where contramap :: (a -> b) -> f b -> f a -- = :: (a -> b) -> (f b -> f a) -- must satisfy: -- contramap id = id -- contramap f . contramap g = contramap (g . f)