
Ryan gave some great advice about restructuring your program to do
what you want, but I wanted to give a small explanation of why that's
necessary.
2009/1/7 Phil
I want to be able to do:
Get_a_random_number
< a whole load of other stuff >
Get the next number as defined by the updated state in the first call
<some more stuff>
Get another number, and so on.
The issue you're having is that you're trying to do the "other stuff" in your 'main', but main isn't inside the State monad. The only State computation you're calling from main is getRanq1, but you really need another State computation that does "other stuff" and calls getRanq1 itself. That's what Ryan's first suggestion implements. You need all your "other stuff" to be done inside the State monad so that it has read/update access to the current random state. So all your main does is run a State computation. That computation calls getRanq1 itself and then "other stuff" in between calls to getRanq1. Does that make sense? Kurt