
It seems like he wants something like sequence, but for tuples. Say:
sequence2 :: Monad m => (m a, m b) -> m (a, b)
sequence2 (ma, mb) = ma >>= \a -> mb >>= \b -> return (a, b)
But without knowing the use case it's hard to know whether or not this
could be done simply with "sequence" and mapM*
Nick
On Fri, Sep 6, 2013 at 2:28 PM, Michael Steele
The `sequence`, `mapM`, and `mapM_` functions may be what you are looking for.
let allTogether = sequence [doA, doB, doC, doZ] case allTogether of Nothing -> ... Just as -> ...
Use `maybe` and `fromMaybe` to avoid case statements:
fromMaybe "failure!" $ do as <- sequence [doA, doB, doC, doZ] return $ "Success: " ++ show (length as)
The `catMaybes` function can be used to execute each computation in the list even if some of them return nothing.
Hello,
I'm often using the Maybe monad to combine Maybe computations one after
On Fri, Sep 6, 2013 at 12:49 PM, Emmanuel Touzery
wrote: the other without conditionals.
But I'm not sure how to do it, when I have several operations which return Maybe and I want all the indiviual values in the end, not a combination of the values.
Currently I do:
let allTogether = do ma <- doA mb <- doB return (ma, mb) case allTogether of Nothing -> ... Just (a, b) -> ...
This way in this case I have one case instead of two, however I'm sure there must be a nicer way to achieve this result?
Thank you!
Emmanuel
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners
-- -- Michael Steele
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners