第一和第二
如果只需要在第一个参数或第二个参数上共同映射,那么应该使用 first
或 second
(代替 bimap
)。
first::Bifunctor f => (a -> c) -> f a b -> f c b
first f = bimap f id
second::Bifunctor f => (b -> d) -> f a b -> f a d
second g = bimap id g
例如,
ghci> second (+ 2) (Right 40)
Right 42
ghci> second (+ 2) (Left "uh oh")
Left "uh oh"