> Hi Mauricio. What you want actually already exists in QuickCheck as > the "Gen" monad. > > newtype Gen a > = Gen (Int -> StdGen -> a) > > instance Monad Gen where > return a = Gen (\n r -> a) > Gen m >>= k = > Gen (\n r0 -> let (r1,r2) = split r0 > Gen m' = k (m n r1) > in m' n r2) > > (...)
Nice. I think that's exactly what I was trying to do. > You could also implement this as a variation on the State monad if you > wanted to avoid using split: (...) Yes. After Brent's explanation I finally realized State was the perfect option. Maybe it should also be better for QuickCheck. I just didn't know it… There are many things in the standard library that do nice things, but I don't understand them until I write a few hundred lines trying to do what they do :) Thanks for your support and patience, Maurício _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe