monad-par-extras-0.3.3: Combinators and extra features for Par monads

Safe Haskell | Safe
Language | Haskell98

Control.Monad.Par.RNG

Contents

- Orphan instances

Description

This module defines another Par-related class to capture the random number generation capability.

The `rand` operation provides deterministic parallel random number generation from within a Par monad.

Most likely one will simply use the `ParRand` the instance provided in this file, which is based on a state transformer carrying the random generator.

Synopsis

- class ParRand p where
- runParRand :: ParFuture fut p => (p a -> a) -> StateT StdGen p a -> IO a
- type ParRandStd par a = StateT StdGen par a

# Documentation

class ParRand p where #

A `ParRand` monad is a Par monad with support for random number generation..

Minimal complete definition

rand

Methods

rand :: Random a => p a #

randInt :: p Int #

Instances

(ParFuture fut p, RandomGen g) => ParRand (StateT g p) # | The most straightforward way to get a `ParRand` monad: carry a RNG in a state transformer.
Methods rand :: Random a => StateT g p a # randInt :: StateT g p Int #

runParRand :: ParFuture fut p => (p a -> a) -> StateT StdGen p a -> IO a #

type ParRandStd par a = StateT StdGen par a #

A convenience type for the most standard

# Orphan instances

RandomGen g => SplittableState g # | Trivial instance.
Methods splitState :: g -> (g, g) #