"Either Fmap" 一直持续到获得正确的结果

"Either Fmap" which Continues until a Right Result has been Reached

如果Either fmap

(a -> b) -> p a a -> p a b

一旦返回 Left 就会停止映射。

在获得 Right 结果之前不会停止的函数的名称或类型签名是什么。

我怀疑是双函子,但我真的需要把它拼写出来 - 还不太了解这些东西的逻辑的微妙之处。

也许某种 fold 也适合...

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