# 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.