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 (David McBride)
   2. Re:  Haskell for Imperative Programmers (PY)


----------------------------------------------------------------------

Message: 1
Date: Tue, 10 Jul 2018 08:50:42 -0400
From: David McBride <toa...@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:
        <can+tr41sanfqtkusyvr2m+xdkmqisvfhdfh3ydtj0r_uyw3...@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://mail.haskell.org/pipermail/beginners/attachments/20180710/e3868fd1/attachment-0001.html>

------------------------------

Message: 2
Date: Tue, 10 Jul 2018 16:05:49 +0300
From: PY <aqua...@gmail.com>
To: beginners@haskell.org
Subject: Re: [Haskell-beginners] Haskell for Imperative Programmers
Message-ID: <3d14b011-0663-0368-f048-8170baa40...@gmail.com>
Content-Type: text/plain; charset="utf-8"; Format="flowed"

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 
> <mailto: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 <mailto: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 <mailto:revol...@gmail.com>> wrote:
>
>             Thanks !
>
>             Le mar. 10 juil. 2018 à 13:14, PY <aqua...@gmail.com
>             <mailto: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://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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://mail.haskell.org/pipermail/beginners/attachments/20180710/10f6c422/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 121, Issue 11
******************************************

Reply via email to