[Haskell-cafe] On the purity of Haskell /Random generators

Jerzy Karczmarczuk jerzy.karczmarczuk at unicaen.fr
Thu Dec 29 22:51:50 CET 2011


Steve Horne :
> I only meant that there's random number handling support in the 
> Haskell library and, and least judging by type signatures, it's pure 
> functional code with no hint of the IO monad.
Look well at those functions, please.

Within the RandomGen class you have pure members, such as next (an Int 
instance of what I called rgen in my previous message. It propagates the 
seed "g" ). The algorithmics of the random generation has no particular 
"monadicity" in it, as I said, the IO (or State) monad serves to hide 
the seed.

The generator itself should not be confounded with its iterative, 
sequential usage. If people wanted to do in their programmes just *one* 
read or write, never repeated, no IO Monad would be necessary.

On the other hand, for the IO, you can sequence the World instances 
explicitly, without any Monads in a pure functional language, this is 
the style used in Clean.

==
I am strongly convinced that ALL people who want to understand the 
functional IO, refs, etc. should learn both, Haskell and Clean. Il might 
help them to see better the relation between the programme, and its 
environment.

==========

You say:
/random numbers are in principle non-deterministic, not determined by 
the current state of the outside world/

Sorry, but I haven't a slightest idea what you are talking about. Dybbuks?

Jerzy



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20111229/ed398890/attachment-0001.htm>


More information about the Haskell-Cafe mailing list