-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Experimental, RandomFu effect and interpreters for polysemy
--
-- Please see the README on GitHub at
-- https://github.com/adamConnerSax/polysemy-Extra/tree/master/polysemy-RandomFu#polysemy-randomfu
@package polysemy-RandomFu
@version 0.1.0.0
-- | Polysemy "random-fu" effect. This can be run in a few ways: 1.
-- Directly in IO 2. Using any RandomSource from
-- "random-fu" 3. In IO, using a given PureMT source.
-- (IO is used to put the source in an IORef)
--
-- This module also contains the type-class instances to enable
-- "absorbing" MonadRandom, ala Polysemy.MTL. See the tests for MTL or
-- RandomFu for examples of that in use.
module Polysemy.RandomFu
-- | An effect capable of sampling from a "random-fu" RVar or generating a
-- single random-variate of any type, t with a
-- Data.Random.Prim t constructor, currently one of
-- Word8, Word16, Word32, Word64,
-- Double or N-byte integer.
data RandomFu m r
[SampleRVar] :: RVar t -> RandomFu m t
[GetRandomPrim] :: Prim t -> RandomFu m t
sampleRVar :: forall r_ajvK r_agJL. Member RandomFu r_ajvK => RVar r_agJL -> Sem r_ajvK r_agJL
getRandomPrim :: forall r_ajvL r_agJL. Member RandomFu r_ajvL => Prim r_agJL -> Sem r_ajvL r_agJL
-- | use the RandomFu effect to sample from a "random-fu"
-- Distribution.
sampleDist :: (Member RandomFu r, Distribution d t) => d t -> Sem r t
-- | Run a Random effect using a given RandomSource
runRandomSource :: forall s r a. RandomSource (Sem r) s => s -> Sem (RandomFu : r) a -> Sem r a
-- | Run a Random effect by using the default "random-fu"
-- IO source
runRandomIO :: forall r a. MonadIO (Sem r) => Sem (RandomFu : r) a -> Sem r a
-- | Run in IO, using the given PureMT source, stored in an
-- IORef
runRandomIOPureMT :: MonadIO (Sem r) => PureMT -> Sem (RandomFu : r) a -> Sem r a
-- | Absorb an MonadRandom constraint. That is, use a
-- Member RandomFu r constraint to satisfy the
-- MonadRandom constraint in a (forall m. MonadRandom m
-- => m a), returning a Sem r a@. See MTL for details.
absorbMonadRandom :: Member RandomFu r => (MonadRandom (Sem r) => Sem r a) -> Sem r a
instance (GHC.Base.Monad m, Data.Reflection.Reifies s' (Polysemy.MTL.Dict1 Data.Random.Internal.Source.MonadRandom m)) => Data.Random.Internal.Source.MonadRandom (Polysemy.MTL.ConstrainedAction Data.Random.Internal.Source.MonadRandom m s')
instance Polysemy.Internal.Union.Member Polysemy.RandomFu.RandomFu r => Polysemy.MTL.IsCanonicalEffect Data.Random.Internal.Source.MonadRandom r
instance Polysemy.MTL.ReifiableConstraint1 Data.Random.Internal.Source.MonadRandom