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: Haskell for Imperative Programmers (Theodore Lief Gannon) ---------------------------------------------------------------------- Message: 1 Date: Tue, 10 Jul 2018 17:53:54 -0700 From: Theodore Lief Gannon <tan...@gmail.com> To: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell <beginners@haskell.org> Subject: Re: [Haskell-beginners] Haskell for Imperative Programmers Message-ID: <CAJoPsuCJq0TCRE28eR_MF8BebFWT6C1tqAFkSPTzB1Ajmb=4...@mail.gmail.com> Content-Type: text/plain; charset="utf-8" Thank you David and PY, that is exactly what I meant. And of course, Gabriel's blog knocks it out of the park as usual! On Tue, Jul 10, 2018, 6:06 AM PY <aqua...@gmail.com> wrote: > More interesting example from Gabriel Gonzalez: > http://www.haskellforall.com/2018/02/the-wizard-monoid.html :) > > 10.07.2018 15:50, David McBride wrote: > > No, he means that an IO action is just another type. For example you can > have a list of IO actions, Then you can take one of them and execute them. > Then you can execute that one action again as many times as you want, > because an IO action is just a type like any other type until it is > executed. These examples are utterly contrived. > > foo :: [IO String] > foo = [return "25", print "hello" >> return "qwerty", getLine] > > foo !! 3 :: IO String > > bar :: [IO Int] > bar = map (fmap read) foo > > main :: IO () > main = do > str <- foo !! 2 > print str > str2 <- foo !! 2 > print str2 > i <- head bar > print (i + 1) > > Even main is just a data structure until the compiler decides to execute > it. It could have been written as an expression. > > main = foo !! 2 >>= \str -> print str >> foo !! 2 >>= \str2 -> print str2 > >> head bar >>= \i -> print (i + 1) > > > > > > > On Tue, Jul 10, 2018 at 8:29 AM, Olivier Revollat <revol...@gmail.com> > wrote: > >> Yes absolutely ! you're referring to laziness right ? >> >> >> Le mar. 10 juil. 2018 à 14:20, Theodore Lief Gannon <tan...@gmail.com> a >> écrit : >> >>> An intuition that really clicked for me is that in Haskell IO code, as >>> in all Haskell code, you are describing a pristine and perfectly inert data >>> structure. It happens to *represent* a set of imperative instructions that >>> the totally impure runtime environment can execute, but that's not your >>> problem! >>> >>> On Tue, Jul 10, 2018, 4:55 AM Olivier Revollat <revol...@gmail.com> >>> wrote: >>> >>>> Thanks ! >>>> >>>> Le mar. 10 juil. 2018 à 13:14, PY <aqua...@gmail.com> a écrit : >>>> >>>>> May be something like this? >>>>> >>>>> *Free monads* ("applicative" style/interpreting trees) and Effects: >>>>> https://markkarpov.com/post/free-monad-considered-harmful.html >>>>> https://mmhaskell.com/blog/2017/11/20/eff-to-the-rescue >>>>> >>>>> *Arrows* (something like "flow"-style): >>>>> https://www.haskell.org/arrows/ >>>>> http://tuttlem.github.io/2014/07/26/practical-arrow-usage.html >>>>> >>>>> >>>>> 10.07.2018 12:22, Olivier Revollat wrote: >>>>> >>>>> Hi, >>>>> I've been using imperative languages for 20 years now :) >>>>> >>>>> I'm a beginner in haskell and I love the paradigm shift you feel when >>>>> you come from imperative programming. I found interesting articles like : >>>>> https://wiki.haskell.org/Haskell_IO_for_Imperative_Programmers >>>>> >>>>> Do you have any other ressources like that ? >>>>> I'm not looking for how to use haskell in imperative style (e.g. with >>>>> "do" notation, ...) no no ! I'm looking articles who explain how NOT TO >>>>> USE >>>>> imperative style with haskell, and help thinking the paradigm shift ... >>>>> >>>>> Thanks :) >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> Beginners mailing >>>>> listBeginners@haskell.orghttp://mail.haskell.org/cgi-bin/mailman/listinfo/beginners >>>>> >>>>> >>>>> _______________________________________________ >>>>> Beginners mailing list >>>>> Beginners@haskell.org >>>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners >>>>> >>>> _______________________________________________ >>>> Beginners mailing list >>>> Beginners@haskell.org >>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners >>>> >>> _______________________________________________ >>> Beginners mailing list >>> Beginners@haskell.org >>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners >>> >> >> _______________________________________________ >> Beginners mailing list >> Beginners@haskell.org >> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners >> >> > > > _______________________________________________ > Beginners mailing > listBeginners@haskell.orghttp://mail.haskell.org/cgi-bin/mailman/listinfo/beginners > > > _______________________________________________ > 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/20180710/eea78e74/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 121, Issue 12 ******************************************