boltzmann-samplers-0.1.1.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.

Instance details

Defined in Boltzmann.Data.Types

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.

Instance details

Defined in Boltzmann.Data.Types

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 # 
Instance details

Defined in Boltzmann.Data.Types

Methods

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

Monad (RejectT m) # 
Instance details

Defined in Boltzmann.Data.Types

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) # 
Instance details

Defined in Boltzmann.Data.Types

Methods

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

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

Applicative (RejectT m) # 
Instance details

Defined in Boltzmann.Data.Types

Methods

pure :: a -> RejectT m a #

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

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

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

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

MonadRandomLike m => MonadRandomLike (RejectT m) # 
Instance details

Defined in Boltzmann.Data.Types

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

Set lower bound

newtype AMonadRandom m a #

Constructors

AMonadRandom 

Fields

Instances
MonadTrans AMonadRandom # 
Instance details

Defined in Boltzmann.Data.Types

Methods

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

Monad m => Monad (AMonadRandom m) # 
Instance details

Defined in Boltzmann.Data.Types

Methods

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

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

return :: a -> AMonadRandom m a #

fail :: String -> AMonadRandom m a #

Functor m => Functor (AMonadRandom m) # 
Instance details

Defined in Boltzmann.Data.Types

Methods

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

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

Applicative m => Applicative (AMonadRandom m) # 
Instance details

Defined in Boltzmann.Data.Types

Methods

pure :: a -> AMonadRandom m a #

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

liftA2 :: (a -> b -> c) -> AMonadRandom m a -> AMonadRandom m b -> AMonadRandom m c #

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

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

MonadRandom m => MonadRandomLike (AMonadRandom m) # 
Instance details

Defined in Boltzmann.Data.Types

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.