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
軟體包。