-- 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.1.2.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 b a liftUniform :: (Uniform b a, Monad m) => m b -> m a uniform :: (Gen g, Uniform (Native g) a) => State g a uniformM :: (Gen g, Uniform (Native g) a, PrimMonad m) => ReaderT (Mut (PrimState m) g) m a instance Random.Uniform a a instance (GHC.Enum.Bounded a, GHC.Enum.Enum a, GHC.Enum.Bounded b, GHC.Enum.Enum b) => Random.Uniform b a instance Random.Uniform Data.Void.Void a instance Random.Uniform a ()