[Haskell-beginners] Haskell for Imperative Programmers

Theodore Lief Gannon tanuki at gmail.com
Wed Jul 11 00:53:54 UTC 2018


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 <aquagnu at 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 <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> 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>
>>> wrote:
>>>
>>>> Thanks !
>>>>
>>>> Le mar. 10 juil. 2018 à 13:14, PY <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://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 at haskell.orghttp://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Beginners mailing list
>>>>> Beginners at haskell.org
>>>>> 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
>>>>
>>> _______________________________________________
>>> Beginners mailing list
>>> Beginners at haskell.org
>>> 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
>>
>>
>
>
> _______________________________________________
> Beginners mailing listBeginners at haskell.orghttp://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/eea78e74/attachment.html>


More information about the Beginners mailing list