On 30/12/2011 00:22, Jerzy Karczmarczuk wrote:
Steve Horne :
Some code (intended to be loaded into GHCi and played with)
--  import System.Random
--  randSelect "this is a list" 5 (mkStdGen 9877087)
-- ...
module P23 (randSelect) where
-- ...
  randSelect' (x:xs) n l g = let xsLen      = (l - 1)
                                 (rnd, g')  = randomR (0, xsLen) g
-- ...
I see no IO monad anywhere in there. Of course I'm cheating - providing a constant seed at runtime.

The last remark is irrelevant. Normally the seed IS constant, injected once, then updated by the generator iself.

I don't know what you are trying to prove.
I don't know why you think I'm trying to prove something here.

Earlier, I mentioned that Haskell provides pure functional random number support in the library - as part of going off on a tangent and, as it happens, of making a mistake. I specifically said something like "with no mention of the IO monad" with respect to type signatures.

You said "Look well at those functions, please". I accepted your challenge. I looked well. I still say that Haskell provides pure functional random number support in the library.

My "last remark" was there basically because of the earlier mistake - acknowledging that I've bypassed the whole issue of where the seed comes from, which may for all I know be supported by a library IO action, and which would be relevant given how this randomness thread started. That was my first mistake in this randomness thread - another mistake I made was saying unsafePerformIO might reasonably be used to sneak in entropy.

Basically, I replied to your challenge - nothing more. I really don't even care much about random numbers - that's why my easiest reference was from back when I was doing those tutorials. There is no deep point here unless you're making one I haven't understood yet.

As for whether or not Haskell is pure - this randomness thread isn't relevant to that any more.

If you see my reference to purity as a weasel way of insinuating that there's also impurity in Haskell - I don't need to insinuate that, I've openly stated my view and explained my reasoning as well as I'm able. What point is there in being a cowardly weasel if you also paint a bullseye on your head and shout "Here I am!"?