Bifunctor 的定义
Bifunctor
是具有两个类型参数(f :: * -> * -> *
)的类型,两者都可以同时进行协变映射。
class Bifunctor f where
bimap :: (a -> c) -> (b -> d) -> f a b -> f c d
bimap
可以被认为是将一对 fmap
操作应用于数据类型。
对于 f
类型,Bifunctor
的正确实例必须满足 bifunctor 定律,这类似于算子定律 :
bimap id id = id -- identity
bimap (f . g) (h . i) = bimap f h . bimap g i -- composition
Bifunctor
类位于 Data.Bifunctor
模块中。对于 GHC 版本> 7.10,该模块与编译器绑定在一起; 对于早期版本,你需要安装 bifunctors
软件包。