-- 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.5.0.0 module Polysemy.ConstraintAbsorber.MonadRandom -- | 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 sampleRVar :: forall r_af5O t_aeZW. Member RandomFu r_af5O => RVar t_aeZW -> Sem r_af5O t_aeZW -- | 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 m r a. (StatefulGen s m, RandomSource m s, Member (Embed m) r) => 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 :: Member (Embed IO) r => PureMT -> Sem (RandomFu : r) a -> Sem r a