如果Either fmap
是
(a -> b) -> p a a -> p a b
在返回Left
后停止映射。
在获得Right
结果之前不会停止的功能的名称或类型签名。
我怀疑是一个bifunctor,但我真的需要它拼写出来 - 还没有完全明白这些事情的逻辑。
也许某种fold
也符合......
答案 0 :(得分:5)
Data.Bifunctor.first :: (a -> b) -> Either a c -> Either b c
在ghci:
Data.Bifunctor> first (+1) (Left 0)
Left 1
Data.Bifunctor> first (+1) (Right 0)
Right 0