Bifunctor

磨机 Functor 的运行在单一类型参数中是协变的。例如,如果 fFunctor,那么给定 f a,以及形式 a -> b 的函数,可以获得 f b(通过使用 fmap)。

Bifunctor两个类型参数中是协变的。如果 fBifunctor,那么给出一个 f a b 和两个函数,一个来自 a -> c,另一个来自 b -> d,那么就可以获得一个 f c d(使用 bimap)。

first 应该被认为是第一类参数的 fmapsecond 作为第二类的 fmapbimap 应该被设想为分别在第一和第二类型参数上共同映射两个函数。