fused-effects-0.2.0.0: A fast, flexible, fused effect system.

Safe HaskellNone
LanguageHaskell2010

Control.Effect.Random

Synopsis

Documentation

data Random m k Source #

Constructors

Random a => Random (a -> k) 
Random a => RandomR (a, a) (a -> k) 
Interleave (m a) (a -> k) 
Instances
Effect Random Source # 
Instance details

Defined in Control.Effect.Random.Internal

Methods

handle :: Functor f => f () -> (forall x. f (m x) -> n (f x)) -> Random m (m a) -> Random n (n (f a)) Source #

HFunctor Random Source # 
Instance details

Defined in Control.Effect.Random.Internal

Methods

fmap' :: (a -> b) -> Random m a -> Random m b Source #

hmap :: (forall x. m x -> n x) -> Random m a -> Random n a Source #

Functor (Random m) Source # 
Instance details

Defined in Control.Effect.Random.Internal

Methods

fmap :: (a -> b) -> Random m a -> Random m b #

(<$) :: a -> Random m b -> Random m a #

(Carrier sig m, Effect sig, RandomGen g, Monad m) => Carrier (Random :+: sig) (RandomC g m) Source # 
Instance details

Defined in Control.Effect.Random

Methods

ret :: a -> RandomC g m a Source #

eff :: (Random :+: sig) (RandomC g m) (RandomC g m a) -> RandomC g m a Source #

runRandom :: (Carrier sig m, Effect sig, Monad m, RandomGen g) => g -> Eff (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 :: (Carrier sig m, Effect sig, Monad m, RandomGen g) => g -> Eff (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 :: (Carrier sig m, Effect sig, Monad m, RandomGen g) => g -> Eff (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 :: (Carrier sig m, Effect sig, MonadIO m) => Eff (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 #

Constructors

RandomC 

Fields

Instances
(Carrier sig m, Effect sig, RandomGen g, Monad m) => Carrier (Random :+: sig) (RandomC g m) Source # 
Instance details

Defined in Control.Effect.Random

Methods

ret :: a -> RandomC g m a Source #

eff :: (Random :+: sig) (RandomC g m) (RandomC g m a) -> RandomC g m a Source #

class Monad m => MonadRandom (m :: Type -> Type) where #

Methods

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 
Instance details

Defined in Control.Monad.Random.Class

Methods

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) 
Instance details

Defined in Control.Monad.Random.Class

Methods

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) 
Instance details

Defined in Control.Monad.Random.Class

Methods

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] #

(Member Random sig, Carrier sig carrier) => MonadRandom (Eff carrier) Source # 
Instance details

Defined in Control.Effect.Internal

Methods

getRandomR :: Random a => (a, a) -> Eff carrier a #

getRandom :: Random a => Eff carrier a #

getRandomRs :: Random a => (a, a) -> Eff carrier [a] #

getRandoms :: Random a => Eff carrier [a] #

MonadRandom m => MonadRandom (IdentityT m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

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) 
Instance details

Defined in Control.Monad.Random.Class

Methods

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) 
Instance details

Defined in Control.Monad.Random.Class

Methods

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 (StateT s m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

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) 
Instance details

Defined in Control.Monad.Random.Class

Methods

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) 
Instance details

Defined in Control.Monad.Random.Class

Methods

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) 
Instance details

Defined in Control.Monad.Random.Class

Methods

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 => MonadRandom (ContT r m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

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] #

MonadRandom m => MonadRandom (ReaderT r m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

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] #

(Monoid w, MonadRandom m) => MonadRandom (RWST r w s m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

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) 
Instance details

Defined in Control.Monad.Random.Class

Methods

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 #

Methods

interleave :: m a -> m a #

Instances
MonadInterleave m => MonadInterleave (ListT m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

interleave :: ListT m a -> ListT m a #

MonadInterleave m => MonadInterleave (MaybeT m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

interleave :: MaybeT m a -> MaybeT m a #

(Member Random sig, Carrier sig carrier) => MonadInterleave (Eff carrier) Source # 
Instance details

Defined in Control.Effect.Internal

Methods

interleave :: Eff carrier a -> Eff carrier a #

MonadInterleave m => MonadInterleave (IdentityT m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

interleave :: IdentityT m a -> IdentityT m a #

(Error e, MonadInterleave m) => MonadInterleave (ErrorT e m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

interleave :: ErrorT e m a -> ErrorT e m a #

MonadInterleave m => MonadInterleave (ExceptT e m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

interleave :: ExceptT e m a -> ExceptT e m a #

MonadInterleave m => MonadInterleave (StateT s m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

interleave :: StateT s m a -> StateT s m a #

MonadInterleave m => MonadInterleave (StateT s m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

interleave :: StateT s m a -> StateT s m a #

(Monoid w, MonadInterleave m) => MonadInterleave (WriterT w m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

interleave :: WriterT w m a -> WriterT w m a #

(Monoid w, MonadInterleave m) => MonadInterleave (WriterT w m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

interleave :: WriterT w m a -> WriterT w m a #

MonadInterleave m => MonadInterleave (ContT r m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

interleave :: ContT r m a -> ContT r m a #

MonadInterleave m => MonadInterleave (ReaderT r m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

interleave :: ReaderT r m a -> ReaderT r m a #

(Monoid w, MonadInterleave m) => MonadInterleave (RWST r w s m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

interleave :: RWST r w s m a -> RWST r w s m a #

(Monoid w, MonadInterleave m) => MonadInterleave (RWST r w s m) 
Instance details

Defined in Control.Monad.Random.Class

Methods

interleave :: RWST r w s m a -> RWST r w s m a #