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
Either
的 Bifunctor
例項根據值是 Left
還是 Right
選擇要應用的兩個函式中的一個。
instance Bifunctor Either where
bimap f g (Left x) = Left (f x)
bimap f g (Right y) = Right (g y)