[Haskell-beginners] Maybe monad and computations
Michael Steele
mikesteele81 at gmail.com
Fri Sep 6 22:28:04 CEST 2013
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.
On Fri, Sep 6, 2013 at 12:49 PM, Emmanuel Touzery <etouzery at gmail.com> wrote:
> Hello,
>
> I'm often using the Maybe monad to combine Maybe computations one after 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 at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
--
-- Michael Steele
More information about the Beginners
mailing list