Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data Random m k
- = Random a => Random (a -> m k)
- | Random a => RandomR (a, a) (a -> m k)
- | Interleave (m a) (a -> m k)
- runRandom :: g -> RandomC g m a -> m (g, a)
- evalRandom :: Functor m => g -> RandomC g m a -> m a
- execRandom :: Functor m => g -> RandomC g m a -> m g
- evalRandomIO :: MonadIO m => RandomC StdGen m a -> m a
- newtype RandomC g m a = RandomC {
- runRandomC :: StateC g m a
- class (HFunctor sig, Monad m) => Carrier sig m | m -> sig
- class Member (sub :: (* -> *) -> * -> *) sup
- class Monad m => MonadRandom (m :: Type -> Type) where
- getRandomR :: Random a => (a, a) -> m a
- getRandom :: Random a => m a
- getRandomRs :: Random a => (a, a) -> m [a]
- getRandoms :: Random a => m [a]
- class MonadRandom m => MonadInterleave (m :: Type -> Type) where
- interleave :: m a -> m a
- run :: PureC a -> a
Random effect
Random a => Random (a -> m k) | |
Random a => RandomR (a, a) (a -> m k) | |
Interleave (m a) (a -> m k) |
Random carrier
runRandom :: g -> RandomC g m a -> m (g, a) Source #
Run a random computation starting from a given generator.
run (runRandom (PureGen a) (pure b)) === (PureGen a, b)
evalRandom :: Functor m => g -> RandomC g m a -> m a Source #
Run a random computation starting from a given generator and discarding the final generator.
run (evalRandom (PureGen a) (pure b)) === b
execRandom :: Functor m => g -> RandomC g m a -> m g Source #
Run a random computation starting from a given generator and discarding the final result.
run (execRandom (PureGen a) (pure b)) === PureGen a
evalRandomIO :: MonadIO m => RandomC StdGen m a -> m a Source #
Run a random computation in IO
, splitting the global standard generator to get a new one for the computation.
newtype RandomC g m a Source #
RandomC | |
|
Instances
Re-exports
class (HFunctor sig, Monad m) => Carrier sig m | m -> sig Source #
The class of carriers (results) for algebras (effect handlers) over signatures (effects), whose actions are given by the eff
method.
Instances
class Monad m => MonadRandom (m :: Type -> Type) where #
getRandomR :: Random a => (a, a) -> m a #
getRandom :: Random a => m a #
getRandomRs :: Random a => (a, a) -> m [a] #
getRandoms :: Random a => m [a] #
Instances
MonadRandom IO | |
Defined in Control.Monad.Random.Class getRandomR :: Random a => (a, a) -> IO a # getRandom :: Random a => IO a # getRandomRs :: Random a => (a, a) -> IO [a] # getRandoms :: Random a => IO [a] # | |
MonadRandom m => MonadRandom (ListT m) | |
Defined in Control.Monad.Random.Class getRandomR :: Random a => (a, a) -> ListT m a # getRandom :: Random a => ListT m a # getRandomRs :: Random a => (a, a) -> ListT m [a] # getRandoms :: Random a => ListT m [a] # | |
MonadRandom m => MonadRandom (MaybeT m) | |
Defined in Control.Monad.Random.Class getRandomR :: Random a => (a, a) -> MaybeT m a # getRandom :: Random a => MaybeT m a # getRandomRs :: Random a => (a, a) -> MaybeT m [a] # getRandoms :: Random a => MaybeT m [a] # | |
MonadRandom m => MonadRandom (IdentityT m) | |
Defined in Control.Monad.Random.Class getRandomR :: Random a => (a, a) -> IdentityT m a # getRandom :: Random a => IdentityT m a # getRandomRs :: Random a => (a, a) -> IdentityT m [a] # getRandoms :: Random a => IdentityT m [a] # | |
(Error e, MonadRandom m) => MonadRandom (ErrorT e m) | |
Defined in Control.Monad.Random.Class getRandomR :: Random a => (a, a) -> ErrorT e m a # getRandom :: Random a => ErrorT e m a # getRandomRs :: Random a => (a, a) -> ErrorT e m [a] # getRandoms :: Random a => ErrorT e m [a] # | |
MonadRandom m => MonadRandom (ExceptT e m) | |
Defined in Control.Monad.Random.Class getRandomR :: Random a => (a, a) -> ExceptT e m a # getRandom :: Random a => ExceptT e m a # getRandomRs :: Random a => (a, a) -> ExceptT e m [a] # getRandoms :: Random a => ExceptT e m [a] # | |
MonadRandom m => MonadRandom (ReaderT r m) | |
Defined in Control.Monad.Random.Class getRandomR :: Random a => (a, a) -> ReaderT r m a # getRandom :: Random a => ReaderT r m a # getRandomRs :: Random a => (a, a) -> ReaderT r m [a] # getRandoms :: Random a => ReaderT r m [a] # | |
MonadRandom m => MonadRandom (StateT s m) | |
Defined in Control.Monad.Random.Class getRandomR :: Random a => (a, a) -> StateT s m a # getRandom :: Random a => StateT s m a # getRandomRs :: Random a => (a, a) -> StateT s m [a] # getRandoms :: Random a => StateT s m [a] # | |
MonadRandom m => MonadRandom (StateT s m) | |
Defined in Control.Monad.Random.Class getRandomR :: Random a => (a, a) -> StateT s m a # getRandom :: Random a => StateT s m a # getRandomRs :: Random a => (a, a) -> StateT s m [a] # getRandoms :: Random a => StateT s m [a] # | |
(MonadRandom m, Monoid w) => MonadRandom (WriterT w m) | |
Defined in Control.Monad.Random.Class getRandomR :: Random a => (a, a) -> WriterT w m a # getRandom :: Random a => WriterT w m a # getRandomRs :: Random a => (a, a) -> WriterT w m [a] # getRandoms :: Random a => WriterT w m [a] # | |
(MonadRandom m, Monoid w) => MonadRandom (WriterT w m) | |
Defined in Control.Monad.Random.Class getRandomR :: Random a => (a, a) -> WriterT w m a # getRandom :: Random a => WriterT w m a # getRandomRs :: Random a => (a, a) -> WriterT w m [a] # getRandoms :: Random a => WriterT w m [a] # | |
(Carrier sig m, Effect sig, RandomGen g) => MonadRandom (RandomC g m) Source # | |
Defined in Control.Effect.Random getRandomR :: Random a => (a, a) -> RandomC g m a # getRandom :: Random a => RandomC g m a # getRandomRs :: Random a => (a, a) -> RandomC g m [a] # getRandoms :: Random a => RandomC g m [a] # | |
MonadRandom m => MonadRandom (ContT r m) | |
Defined in Control.Monad.Random.Class getRandomR :: Random a => (a, a) -> ContT r m a # getRandom :: Random a => ContT r m a # getRandomRs :: Random a => (a, a) -> ContT r m [a] # getRandoms :: Random a => ContT r m [a] # | |
(Monoid w, MonadRandom m) => MonadRandom (RWST r w s m) | |
Defined in Control.Monad.Random.Class getRandomR :: Random a => (a, a) -> RWST r w s m a # getRandom :: Random a => RWST r w s m a # getRandomRs :: Random a => (a, a) -> RWST r w s m [a] # getRandoms :: Random a => RWST r w s m [a] # | |
(Monoid w, MonadRandom m) => MonadRandom (RWST r w s m) | |
Defined in Control.Monad.Random.Class getRandomR :: Random a => (a, a) -> RWST r w s m a # getRandom :: Random a => RWST r w s m a # getRandomRs :: Random a => (a, a) -> RWST r w s m [a] # getRandoms :: Random a => RWST r w s m [a] # |
class MonadRandom m => MonadInterleave (m :: Type -> Type) where #
interleave :: m a -> m a #