mb1*_*b14 3 haskell tuples function type-conversion maybe
是否有一个简单的(没有重新发明轮子)转换(Maybe a, b)为Maybe (a,b).我看着Traversable却无法发挥作用.
你也可以使用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)
是.函子.
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)
在这里了解更多.