| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Polysemy.RandomFu
Contents
Description
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.
Synopsis
- data RandomFu m r where
- SampleRVar :: RVar t -> RandomFu m t
- sampleRVar :: forall r t. Member RandomFu r => RVar t -> Sem r t
- sampleDist :: (Member RandomFu r, Distribution d t) => d t -> Sem r t
- runRandomSource :: forall s m r a. (StatefulGen s m, RandomSource m s, Member (Embed m) r) => s -> Sem (RandomFu ': r) a -> Sem r a
- runRandomIO :: forall r a. MonadIO (Sem r) => Sem (RandomFu ': r) a -> Sem r a
- runRandomIOPureMT :: Member (Embed IO) r => PureMT -> Sem (RandomFu ': r) a -> Sem r a
Effect
data RandomFu m r where Source #
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.
Constructors
| SampleRVar :: RVar t -> RandomFu m t |
Actions
sampleDist :: (Member RandomFu r, Distribution d t) => d t -> Sem r t Source #
use the RandomFu effect to sample from a "random-fu" Distribution.
Interpretations
runRandomSource :: forall s m r a. (StatefulGen s m, RandomSource m s, Member (Embed m) r) => s -> Sem (RandomFu ': r) a -> Sem r a Source #
Run a Random effect using a given RandomSource