将(也许a,b)转换为Maybe(a,b)

mb1*_*b14 3 haskell tuples function type-conversion maybe

是否有一个简单的(没有重新发明轮子)转换(Maybe a, b)Maybe (a,b).我看着Traversable却无法发挥作用.

Pet*_*lák 7

你也可以使用Bitraversable:

bitraverse id pure :: (Bitraversable t, Applicative f) => t (f c) d -> f (t c d)
Run Code Online (Sandbox Code Playgroud)

哪个专攻

bitraverse id pure :: (Maybe a, b) -> Maybe (a, b)
Run Code Online (Sandbox Code Playgroud)


AJF*_*mar 5

是.函子.

solution :: (Maybe a, b) -> Maybe (a, b)
solution (a, b) = fmap (\q -> (q, b)) a
Run Code Online (Sandbox Code Playgroud)

或者,以无点样式:

solution = uncurry $ flip $ fmap . flip (,)
Run Code Online (Sandbox Code Playgroud)

另外,正如@Bakuriu所说,如果你已TupleSections启用并Control.Applicative导入,它变得非常简单:

solution (a, b) = (, b) <$> a
Run Code Online (Sandbox Code Playgroud)

在这里了解更多.