Bifunctor
磨机 Functor
的运行在单一类型参数中是协变的。例如,如果 f
是 Functor
,那么给定 f a
,以及形式 a -> b
的函数,可以获得 f b
(通过使用 fmap
)。
Bifunctor
在两个类型参数中是协变的。如果 f
是 Bifunctor
,那么给出一个 f a b
和两个函数,一个来自 a -> c
,另一个来自 b -> d
,那么就可以获得一个 f c d
(使用 bimap
)。
first
应该被认为是第一类参数的 fmap
,second
作为第二类的 fmap
,bimap
应该被设想为分别在第一和第二类型参数上共同映射两个函数。