boltzmann-samplers-0.1.0.0: Uniform random generators

Safe HaskellNone
LanguageHaskell2010

Boltzmann.Data.Types

Contents

Description

Internal module

Synopsis

Documentation

data SomeData m where #

Constructors

SomeData :: Data a => m a -> SomeData m 

Instances

Show (SomeData m) #

Dummy instance for debugging.

Methods

showsPrec :: Int -> SomeData m -> ShowS #

show :: SomeData m -> String #

showList :: [SomeData m] -> ShowS #

data Alias m where #

Constructors

Alias :: (Data a, Data b) => !(m a -> m b) -> Alias m 

Instances

Show (Alias m) #

Dummy instance for debugging.

Methods

showsPrec :: Int -> Alias m -> ShowS #

show :: Alias m -> String #

showList :: [Alias m] -> ShowS #

type AliasR m = Alias (RejectT m) #

alias :: (Monad m, Data a, Data b) => (a -> m b) -> Alias m #

Main constructor for Alias.

aliasR :: (Monad m, Data a, Data b) => (a -> m b) -> AliasR m #

Main constructor for AliasR.

coerceAlias :: Coercible m n => Alias m -> Alias n #

coerceAlias :: Alias m -> Alias (AMonadRandom m)

coerceAliases :: Coercible m n => [Alias m] -> [Alias n] #

coerceAliases :: [Alias m] -> [Alias (AMonadRandom m)]

composeCastM :: forall a b c d m. (Typeable b, Typeable c) => (m c -> d) -> (a -> m b) -> a -> d #

composeCast f g = f . g

castM :: forall a b m. (Typeable a, Typeable b) => m a -> m b #

unSomeData :: Typeable a => SomeData m -> m a #

applyCast :: (Typeable a, Data b) => (m a -> m b) -> SomeData m -> SomeData m #

castError :: (Typeable a, Typeable b) => proxy a -> proxy' b -> c #

withProxy :: (a -> b) -> proxy a -> b #

reproxy :: proxy a -> Proxy a #

proxyType :: m a -> proxy a -> m a #

someData' :: Data a => proxy a -> SomeData' #

type Size = Int #

Size as the number of constructors.

newtype RejectT m a #

Internal transformer for rejection sampling.

ReaderT Size (StateT Size (MaybeT m)) a

Constructors

RejectT 

Fields

Instances

MonadTrans RejectT # 

Methods

lift :: Monad m => m a -> RejectT m a #

Monad (RejectT m) # 

Methods

(>>=) :: RejectT m a -> (a -> RejectT m b) -> RejectT m b #

(>>) :: RejectT m a -> RejectT m b -> RejectT m b #

return :: a -> RejectT m a #

fail :: String -> RejectT m a #

Functor (RejectT m) # 

Methods

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

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

Applicative (RejectT m) # 

Methods

pure :: a -> RejectT m a #

(<*>) :: RejectT m (a -> b) -> RejectT m a -> RejectT m b #

(*>) :: RejectT m a -> RejectT m b -> RejectT m b #

(<*) :: RejectT m a -> RejectT m b -> RejectT m a #

MonadRandomLike m => MonadRandomLike (RejectT m) # 

runRejectT :: Monad m => (Size, Size) -> RejectT m a -> m a #

Set lower bound

newtype AMonadRandom m a #

Constructors

AMonadRandom 

Fields

Dictionaries

class Monad m => MonadRandomLike m where #

MonadRandomLike m defines basic components to build generators, allowing the implementation to remain abstract over both the Gen type and MonadRandom instances.

For the latter, the wrapper AMonadRandom is provided to avoid overlapping instances.

Minimal complete definition

doubleR, integerR, int, double, char

Methods

incr :: m () #

Called for every constructor. Counter for ceiled rejection sampling.

doubleR :: Double -> m Double #

doubleR upperBound: generates values in [0, upperBound].

integerR :: Integer -> m Integer #

integerR upperBound: generates values in [0, upperBound-1].

int :: m Int #

Default Int generator.

double :: m Double #

Default Double generator.

char :: m Char #

Default Char generator.