"要么Fmap"继续直到达到正确的结果

use*_*325 -2 haskell either

如果Either fmap是的话

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

一旦Left返回,它将停止映射.

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

我怀疑是一个bifunctor,但我真的需要它拼出来 - 不太明白这些东西的逻辑.

也许某种形式也fold适合......

Dan*_*ner 5

Data.Bifunctor.first :: (a -> b) -> Either a c -> Either b c
Run Code Online (Sandbox Code Playgroud)

在ghci:

Data.Bifunctor> first (+1) (Left 0)
Left 1
Data.Bifunctor> first (+1) (Right 0)
Right 0
Run Code Online (Sandbox Code Playgroud)