这似乎是一个远景,但最近我需要以下内容:

mjoin :: (Monoid b, Monad m) => m b -> m b -> m b
mjoin a b = do
  a' <- a
  b' <- b
  return $ mappend a' b'

示例用法是这样的:
> mjoin (Just [1,2,3]) (Just [4, 5, 6])
Just [1,2,3,4,5,6]
> mjoin (Just [1,2,3]) Nothing
Nothing
> mjoin Nothing (Just [4, 5, 6])
Nothing

换句话说,如果任一参数是 Nothing ,则返回 Nothing 。否则,返回 Just 和附加值。

是否有一个标准函数或一个更简单的公式,也许是 >>=

最佳答案

也许是这样的:

mjoin :: (Monoid b, Monad m) => m b -> m b -> m b
mjoin = liftM2 mappend

关于 "mjoin"的 Haskell 标准函数(或简单组合)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27328549/

10-10 20:10