# Bifunctor A bifunctor is a [[Covariant Functor|Covariant Functor]] but with two generic arguments instead of one. It's an `E<a, b>` with two `map` operators, one for each type argument. Contrast this to a [[Profunctor]], which has a `contramap` for its first type argument.