Send Beginners mailing list submissions to beginners@haskell.org To subscribe or unsubscribe via the World Wide Web, visit http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners or, via email, send a message with subject or body 'help' to beginners-requ...@haskell.org
You can reach the person managing the list at beginners-ow...@haskell.org When replying, please edit your Subject line so it is more specific than "Re: Contents of Beginners digest..." Today's Topics: 1. Re: I have a -> f a. How to get m a -> f m a ? (Baa) 2. get rid of IO in [IO XXX] (i...@maximka.de) 3. Re: get rid of IO in [IO XXX] (Mihai Maruseac) 4. Re: get rid of IO in [IO XXX] (Alex Belanger) 5. Re: Beginners Digest, Vol 111, Issue 4 (Jack Brandt) ---------------------------------------------------------------------- Message: 1 Date: Mon, 4 Sep 2017 15:36:42 +0300 From: Baa <aqua...@gmail.com> To: beginners@haskell.org Subject: Re: [Haskell-beginners] I have a -> f a. How to get m a -> f m a ? Message-ID: <20170904153642.7e839b91@Pavel> Content-Type: text/plain; charset=US-ASCII Hello, Imants! Exactly :) Thanks! > > I have function a -> IO a. How to get function: > > Maybe a -> IO (Maybe a) ? > > Will mapM work: > > http://hackage.haskell.org/package/base-4.10.0.0/docs/Data-Traversable.html#v:mapM > > ? > > > > On 4 September 2017 at 15:06, Baa <aqua...@gmail.com> wrote: > > > Hello List! > > > > I have function a -> IO a. How to get function: > > > > Maybe a -> IO (Maybe a) ? > > > > I found in Haskell mails archive such thing: > > > > class IFunctor f where > > imap :: Idiom i => (s -> i t) -> f s -> i (f t) > > > > which looks similar, but I didn't find any helpfull instances of > > `IFunctor` class in its package (and unfortunately I don't know > > what are the indexed types: IMonad, IFunctor, etc). Sure, there is > > the primitive solution like: > > > > myfunc :: a -> IO a > > ... > > f x = case x of Nothing -> return Nothing > > Just x' -> Just <$> myfunc x' > > > > but more interesting is to know more standard and Haskelish solution > > (like lift's, etc). May be I miss something very obvious.. > > > > === > > Best regards, Paul > > _______________________________________________ > > Beginners mailing list > > Beginners@haskell.org > > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners > > ------------------------------ Message: 2 Date: Mon, 4 Sep 2017 18:04:42 +0200 (CEST) From: i...@maximka.de To: beginners@haskell.org Subject: [Haskell-beginners] get rid of IO in [IO XXX] Message-ID: <1953337571.1245148.1504541082...@communicator.strato.de> Content-Type: text/plain; charset=UTF-8 What is the way to transform a list of [IO XXX] type to [XXX]? Thanks, Alexei ------------------------------ Message: 3 Date: Mon, 4 Sep 2017 09:09:07 -0700 From: Mihai Maruseac <mihai.marus...@gmail.com> To: i...@maximka.de, The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] get rid of IO in [IO XXX] Message-ID: <caomsumkussdw5+svj2kdczvr9bdwqpwakfwwpe6mro3oefb...@mail.gmail.com> Content-Type: text/plain; charset="UTF-8" Hi, Use sequence. It has type t (m a) -> m (t a) where m is a Monad (like IO) and t is a Traversable (like the list). Documentation: http://hackage.haskell.org/package/base-4.10.0.0/docs/Prelude.html#v:sequence I got to it using Hoogle: https://www.haskell.org/hoogle/?hoogle=%5BIO+a%5D+-%3E+IO+%5Ba%5D On Mon, Sep 4, 2017 at 9:04 AM, <i...@maximka.de> wrote: > What is the way to transform a list of [IO XXX] type to [XXX]? > > Thanks, > Alexei > _______________________________________________ > Beginners mailing list > Beginners@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners -- Mihai Maruseac (MM) "If you can't solve a problem, then there's an easier problem you can solve: find it." -- George Polya ------------------------------ Message: 4 Date: Mon, 4 Sep 2017 12:38:25 -0400 From: Alex Belanger <i.caught....@gmail.com> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org>, i...@maximka.de Subject: Re: [Haskell-beginners] get rid of IO in [IO XXX] Message-ID: <cadsky2z-uq+poysbtaz0yspe8aomcyzbmawdhwv5bs-q5ud...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" You can turn `[IO a]` into `IO [a]` by traversing the Traversable and sequencing the actions using `sequence`. Note that what it creates is a slightly different IO computation that re-organizes the results, you'll still need to run that IO in the end. Typically, it's passed all the way down to your closest use of IO (often main for beginners) where you'll be able to finally get rid of it by performing the effects and doing something with the results. The flavor of choice depends on the situation but I find the IO monad very readable. main :: IO () main = do listOfA <- sequence ioListOfA -- Use listOfA from here Alex On Sep 4, 2017 12:05 PM, <i...@maximka.de> wrote: > What is the way to transform a list of [IO XXX] type to [XXX]? > > Thanks, > Alexei > _______________________________________________ > Beginners mailing list > Beginners@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.haskell.org/pipermail/beginners/attachments/20170904/9001616c/attachment-0001.html> ------------------------------ Message: 5 Date: Mon, 4 Sep 2017 12:33:30 -0500 From: Jack Brandt <jackbrand...@gmail.com> To: beginners@haskell.org Subject: Re: [Haskell-beginners] Beginners Digest, Vol 111, Issue 4 Message-ID: <CAL6jW6NapihhO25dFNBMXuc4O6waMxbNnM7cOLRe3Bq9U0=y...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" Would a specialization of return work, as in f = return :: Maybe a -> IO (Maybe a)? On Mon, Sep 4, 2017 at 7:00 AM, <beginners-requ...@haskell.org> wrote: > Send Beginners mailing list submissions to > beginners@haskell.org > > To subscribe or unsubscribe via the World Wide Web, visit > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners > or, via email, send a message with subject or body 'help' to > beginners-requ...@haskell.org > > You can reach the person managing the list at > beginners-ow...@haskell.org > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of Beginners digest..." > > > Today's Topics: > > 1. I have a -> f a. How to get m a -> f m a ? (Baa) > 2. Re: I have a -> f a. How to get m a -> f m a ? (Imants Cekusins) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Mon, 4 Sep 2017 15:06:34 +0300 > From: Baa <aqua...@gmail.com> > To: beginners@haskell.org > Subject: [Haskell-beginners] I have a -> f a. How to get m a -> f m a > ? > Message-ID: <20170904150634.230dd5ff@Pavel> > Content-Type: text/plain; charset=US-ASCII > > Hello List! > > I have function a -> IO a. How to get function: > > Maybe a -> IO (Maybe a) ? > > I found in Haskell mails archive such thing: > > class IFunctor f where > imap :: Idiom i => (s -> i t) -> f s -> i (f t) > > which looks similar, but I didn't find any helpfull instances of > `IFunctor` class in its package (and unfortunately I don't know what are > the indexed types: IMonad, IFunctor, etc). Sure, there is the primitive > solution like: > > myfunc :: a -> IO a > ... > f x = case x of Nothing -> return Nothing > Just x' -> Just <$> myfunc x' > > but more interesting is to know more standard and Haskelish solution > (like lift's, etc). May be I miss something very obvious.. > > === > Best regards, Paul > > > ------------------------------ > > Message: 2 > Date: Mon, 4 Sep 2017 15:14:42 +0300 > From: Imants Cekusins <ima...@gmail.com> > To: The Haskell-Beginners Mailing List - Discussion of primarily > beginner-level topics related to Haskell <beginners@haskell.org> > Subject: Re: [Haskell-beginners] I have a -> f a. How to get m a -> f > m a ? > Message-ID: > <CAP1qinaEhE6HqvS0O9-CfV9Vc2x8ZvfQ_SRFXQgVH- > yhapz...@mail.gmail.com> > Content-Type: text/plain; charset="utf-8" > > > I have function a -> IO a. How to get function: > > Maybe a -> IO (Maybe a) ? > > Will mapM work: > > http://hackage.haskell.org/package/base-4.10.0.0/docs/ > Data-Traversable.html#v:mapM > > ? > > > > On 4 September 2017 at 15:06, Baa <aqua...@gmail.com> wrote: > > > Hello List! > > > > I have function a -> IO a. How to get function: > > > > Maybe a -> IO (Maybe a) ? > > > > I found in Haskell mails archive such thing: > > > > class IFunctor f where > > imap :: Idiom i => (s -> i t) -> f s -> i (f t) > > > > which looks similar, but I didn't find any helpfull instances of > > `IFunctor` class in its package (and unfortunately I don't know what are > > the indexed types: IMonad, IFunctor, etc). Sure, there is the primitive > > solution like: > > > > myfunc :: a -> IO a > > ... > > f x = case x of Nothing -> return Nothing > > Just x' -> Just <$> myfunc x' > > > > but more interesting is to know more standard and Haskelish solution > > (like lift's, etc). May be I miss something very obvious.. > > > > === > > Best regards, Paul > > _______________________________________________ > > Beginners mailing list > > Beginners@haskell.org > > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners > > > -------------- next part -------------- > An HTML attachment was scrubbed... > URL: <http://mail.haskell.org/pipermail/beginners/ > attachments/20170904/f82f05da/attachment-0001.html> > > ------------------------------ > > Subject: Digest Footer > > _______________________________________________ > Beginners mailing list > Beginners@haskell.org > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners > > > ------------------------------ > > End of Beginners Digest, Vol 111, Issue 4 > ***************************************** > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.haskell.org/pipermail/beginners/attachments/20170904/9b4c0ee6/attachment.html> ------------------------------ Subject: Digest Footer _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners ------------------------------ End of Beginners Digest, Vol 111, Issue 5 *****************************************