Assignment versus binding
Ben Bacarisse
ben.usenet at bsb.me.uk
Wed Oct 5 10:27:35 EDT 2016
BartC <bc at freeuk.com> writes:
> On 05/10/2016 11:03, Ben Bacarisse wrote:
>> Gregory Ewing <greg.ewing at canterbury.ac.nz> writes:
>>
>>> Steve D'Aprano wrote:
>>>
>>>> And (shamelessly using Python syntax) if I have a function:
>>>>
>>>> def spam(x):
>>>> print(x)
>>>> print(x+1)
>>>>
>>>> spam(time.sleep(60) or 1)
>>>
>>> You can't write that in Haskell, because Haskell's
>>> equivalent of print() is not a function (or at least
>>> it's not a function that ever returns), and neither
>>> is sleep().
>>
>> I suppose it all depends on what "that" is exactly. Here is the closest
>> match I could come up with:
>>
>> import Control.Concurrent
>>
>> spam io = do x <- io;
>> print x;
>> print (x+1)
>>
>> main = spam (do threadDelay (2*10^6); return 1)
>>
>> It matches the Python in that the delay happens once. To get the
>> behaviour being hinted at (two delays) you need to re-bind the IO
>> action:
>>
>> spam io = do x <- io;
>> print x;
>> x <- io;
>> print (x+1)
>
> (I downloaded Haskell (ghc) yesterday to try this out. First problem
> was that I couldn't figure out how to do two things one after another
> (apparently you need 'do').
>
> And when I tried to use a random number function in an expression to
> see if it was evaluated once or twice, apparently my installation
> doesn't have any form of random() (despite being a monstrous 1700MB
> with 20,000 files).
I'm not sure what is installed by default. The place to look is the
module System.Random:
$ ghci
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help
Prelude> import System.Random
Prelude System.Random> getStdRandom random
-4343223433618198958
If this does not work "out of the box" you need to use something like
cabal to install System.Random.
> Not an easy language..)
Not an easy language to get started with, for sure. It is very
different to the languages that most people have got used to. I image
that people who learn it first have a different view (in more ways than
one!).
--
Ben.
More information about the Python-list
mailing list