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 软件包。