
I'm trying to build a list where each entry depends on the previous one. Unfoldr seemed like a good idea at the time. Unfortunately, my values are monadic values (specifically RVars, from the random-fu package). Okay, shouldn't be a problem; I just monadic bind and...
-- example code updateCell :: Bool -> RVar Bool updateCell False = return False updateCell True = bernoulli (0.9 :: Double)
sim = sequence $ take 20 $ unfoldr (\x -> Just (x, x >>= updateCell)) (return True)
runRVar sim DevURandom [True,True,True,True,True,False,True,False,True,False,False,False,False,False,False,True,True,False,False,False]
That output shouldn't be possible if I'm doing things right... It appears that each cell has an independent history. I'm stumped. Advice on threading monad input in general and random-fu in specific would be appreciated. -- Alex R