Hector Guilarte
I need to randomly select ONE of the valid conditions and execute it's instruction. I know there is a Random Monad, but it returns an IO Int,
No, this is not right. Values in the Random monad are computations that rely on randomness, but they can produce values of arbitrary type. (The 'a' in 'Random a', no?)
Is there anyway I can do some Random that doesn't involve IO? or any other solution?
Some options are: 1. Use the IO monad 2. Use the Random monad 3. Pass around a RandomGen explicitly 4. Generate an infinite stream of random values, and pass that around I think option 2 is the nicest, but option 4 may work if the use of randomness is limited. No. 3 does the same as 2 (I presume, I never looked) but with a lot more noise in your code, and no. 1 erases the separation between real IO, and computations -- which IME includes a lot of them -- that happen to depend on randomness (but require no other IO). -k -- If I haven't seen further, it is by standing in the footprints of giants