-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Actually useful monadic random value generators. -- -- A nice wrapping around System.Random. Full documentation is available -- in Literate Haskell at the homepage link. @package generators @version 1.0 -- | Randomness in Haskell has always been an emph{ugly} affair, requiring -- acquisition of a RandomGen value and then a threading of each -- successive generator throughout the code. The System.Random -- library, while flexible, is rather unwieldly for common applications. -- | In particular, making a series of random decisions (such as -- navigating a random path through a space, or generating a sequence of -- text), or negotiating situations where the set of options for a random -- generator are dependent on the previously determined random value, are -- rather unimpressive using System.Random, and fail to -- demonstrate Haskell's excellent expressive power. | Random generators -- in System.Random are tied to data types, instances of the -- Random typeclass, and more complicated generators must be -- painstakingly specified. | In this Literate Haskell Module I present a -- Generator data structure, a Monad, that when provided with a -- seed value or a RandomGen value, will provide an infinite -- list of random choices based on some composition of other -- Generators. | For full documentation, please see: -- http:liamoc.netlhsGenerator.pdf module System.Random.Generators data Generator v runGenerator :: Int -> Generator v -> [v] runGeneratorWith :: StdGen -> Generator v -> [v] constantG :: v -> Generator v randomG :: (Random r) => Generator r rangeG :: (Random r) => (r, r) -> Generator r listG :: [a] -> Generator a instance Monad Generator instance Functor Generator