[Haskell-beginners] Good way of combining functions of type IO (Maybe a)

Chris Schneider chris at christopher-schneider.com
Mon Mar 3 17:00:26 UTC 2014


I'm a beginner as well, and I explored how to use the maybeT transformer
and wrote it up on my blog across a few posts. Mostly they were just for my
own learning purposes, but maybe you can find something in them too?

http://watchchrislearn.com/blog/2013/11/28/playing-with-the-either-monad/
http://watchchrislearn.com/blog/2013/11/30/using-the-either-monad-inside-another-monad/
http://watchchrislearn.com/blog/2013/11/30/eithert-inside-of-io/
http://watchchrislearn.com/blog/2013/12/01/working-entirely-in-eithert/




On Mon, Mar 3, 2014 at 8:21 AM, David McBride <toad3k at gmail.com> wrote:

> cabal install maybet
>
> import Control.Monad.Maybe
>
> f1 :: IO (Maybe Int)
> f1 = return . Just $ 1
>
> d2 :: Int -> IO (Maybe String)
> d2 = return . Just . show
>
> blah :: IO (Maybe (Int, String))
> blah = do
>   runMaybeT $ do
>   a <- MaybeT f1
>   b <- MaybeT $ d2 a
>   return (a,b)
>
> Or slightly rewritten:
>
> f1 :: MaybeT IO Int
> f1 = return 1
> -- f1 = fail "why oh why?!?"
>
> d2 :: Int -> MaybeT IO String
> d2 = return . show
>
> blah = do
>   runMaybeT $ do
>
>   a <- f1
>   b <- d2 a
>   return (a,b)
>
>
>
> On Mon, Mar 3, 2014 at 10:10 AM, Nathan Hüsken <nathan.huesken at posteo.de>wrote:
>
>>  Hey,
>>
>> I want to write a function, which is basically a concatenation of
>> functions of type "IO (Maybe a)".
>> When they all where of type "Maybe a", no Problem I would simple use the
>> Maybe monad.
>>
>> func :: Maybe cfunc = do
>>   a <- f1
>>   b <- d2 a
>>   ...
>>
>> but now they are of type "IO (Maybe a)". Is there some way of combing
>> these in a similar smart way?
>>
>> Thanks!
>> Nathan
>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners at haskell.org
>> http://www.haskell.org/mailman/listinfo/beginners
>>
>>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20140303/10fad149/attachment.html>


More information about the Beginners mailing list