Although now that I think about it, most of these could be pretty easily fixed by a new primitive:
> splitGen :: Gen a -> Gen a > splitGen m = MkGen spg where > spg g n = (a, g2) where > (g1, g2) = split g > (a, _) = unGen m g1 n Then you could do > infinite_xs <- splitGen $ sequence (repeat arbitrary) -- ryan On Tue, Feb 2, 2010 at 2:04 PM, Ryan Ingram <ryani.s...@gmail.com> wrote: > On Tue, Feb 2, 2010 at 11:25 AM, David Menendez <d...@zednenem.com> wrote: >> We could avoid that problem by redefining Gen as a state transformer monad. >> >> newtype Gen a = MkGen { unGen :: StdGen -> Int -> (a, StdGen) } > > Unfortunately, this makes things like >> infinite_xs <- sequence (repeat arbitrary) > no longer work, since the state never comes out the other side. > > Which is a pretty significant change. > > -- ryan > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe