[Haskell-beginners] Haskell for Imperative Programmers
PY
aquagnu at gmail.com
Tue Jul 10 13:05:49 UTC 2018
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 <revollat at gmail.com
> <mailto:revollat at gmail.com>> wrote:
>
> Yes absolutely ! you're referring to laziness right ?
>
>
> Le mar. 10 juil. 2018 à 14:20, Theodore Lief Gannon
> <tanuki at gmail.com <mailto:tanuki at 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
> <revollat at gmail.com <mailto:revollat at gmail.com>> wrote:
>
> Thanks !
>
> Le mar. 10 juil. 2018 à 13:14, PY <aquagnu at gmail.com
> <mailto:aquagnu at 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 at haskell.org <mailto:Beginners at haskell.org>
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>> <http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org <mailto:Beginners at haskell.org>
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
> <http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org <mailto:Beginners at haskell.org>
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
> <http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org <mailto:Beginners at haskell.org>
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
> <http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners>
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org <mailto:Beginners at haskell.org>
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
> <http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners>
>
>
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at 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/10f6c422/attachment-0001.html>
More information about the Beginners
mailing list