Bifunctor 的常見例項

雙元素元組

(,) 是具有 Bifunctor 例項的型別的示例。

instance Bifunctor (,) where
    bimap f g (x, y) = (f x, g y)

bimap 接受一對函式並將它們應用於元組的各個元件。

bimap (+ 2) (++ "nie") (3, "john") --> (5,"johnnie")
bimap ceiling length (3.5 :: Double, "john" :: String) --> (4,4)

Either

EitherBifunctor 例項根據值是 Left 還是 Right 選擇要應用的兩個函式中的一個。

instance Bifunctor Either where
    bimap f g (Left x) = Left (f x)
    bimap f g (Right y) = Right (g y)