
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
mailto:revollat@gmail.com> wrote: Yes absolutely ! you're referring to laziness right ?
Le mar. 10 juil. 2018 à 14:20, Theodore Lief Gannon
mailto:tanuki@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
mailto:revollat@gmail.com> wrote: Thanks !
Le mar. 10 juil. 2018 à 13:14, PY
mailto:aquagnu@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://markkarpov.com/post/free-monad-considered-harmful.html https://mmhaskell.com/blog/2017/11/20/eff-to-the-rescue https://mmhaskell.com/blog/2017/11/20/eff-to-the-rescue
*Arrows* (something like "flow"-style): https://www.haskell.org/arrows/ https://www.haskell.org/arrows/ http://tuttlem.github.io/2014/07/26/practical-arrow-usage.html 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 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 list Beginners@haskell.org mailto:Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
_______________________________________________ Beginners mailing list Beginners@haskell.org mailto:Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
_______________________________________________ Beginners mailing list Beginners@haskell.org mailto:Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
_______________________________________________ Beginners mailing list Beginners@haskell.org mailto:Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
_______________________________________________ Beginners mailing list Beginners@haskell.org mailto:Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners