-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Class of random value generation -- -- Class of random value generation @package random-class @version 0.2.0.0 module Random class Gen g where type Mut s g = m | m -> s g type Native g type Mut s g = MutVar s g uniformNativeM = ReaderT $ flip atomicModifyMutVar $ swap . runState uniformNative skip n = appEndo . stimes n . Endo $ execState uniformNative skipM = flip mtimesA (() <$ uniformNativeM) where { type family Mut s g = m | m -> s g; type family Native g; type Mut s g = MutVar s g; } uniformNative :: Gen g => State g (Native g) uniformNativeM :: (Gen g, PrimMonad m) => ReaderT (Mut (PrimState m) g) m (Native g) skip :: Gen g => Natural -> g -> g skipM :: (Gen g, PrimMonad m) => Natural -> ReaderT (Mut (PrimState m) g) m () uniformNativeM :: (Gen g, Mut (PrimState m) g ~ MutVar (PrimState m) g, PrimMonad m) => ReaderT (Mut (PrimState m) g) m (Native g) skipM :: (Gen g, Mut (PrimState m) g ~ MutVar (PrimState m) g, PrimMonad m) => Natural -> ReaderT (Mut (PrimState m) g) m () class Split g split :: Split g => g -> (g, g) class Uniform a liftUniform :: (Uniform a, Bounded b, Enum b, Monad m) => m b -> m a uniform :: (Gen g, Bounded (Native g), Enum (Native g), Uniform a) => State g a range :: (Gen g, Bounded (Native g), Enum (Native g), Enum a) => (a, a) -> State g a weighted :: (Gen g, Bounded (Native g), Enum (Native g), Uniform a) => NonEmpty (a, Ratio Natural) -> State g a uniformM :: (Gen g, Bounded (Native g), Enum (Native g), Uniform a, PrimMonad m) => ReaderT (Mut (PrimState m) g) m a rangeM :: (Gen g, Bounded (Native g), Enum (Native g), Enum a, PrimMonad m) => (a, a) -> ReaderT (Mut (PrimState m) g) m a weightedM :: (Gen g, Bounded (Native g), Enum (Native g), Uniform a, PrimMonad m) => NonEmpty (a, Ratio Natural) -> ReaderT (Mut (PrimState m) g) m a instance (GHC.Enum.Bounded a, GHC.Enum.Enum a) => Random.Uniform a instance Random.Uniform ()