traq
Safe HaskellSafe-Inferred
LanguageHaskell2010

Traq.Primitives.Amplify.Prelude

Synopsis

Amplify Primitive

data Amplify size prec #

Primitive amplify that takes a sampler and returns a good sample w.h.p. The sampler must return a sample and a boolean flag, and if there is a good sample, it should return one with probability at least p_min.

Constructors

Amplify 

Fields

Instances

Instances details
Read prec => Read (Amplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.Prelude

Methods

readsPrec :: Int -> ReadS (Amplify size prec) #

readList :: ReadS [Amplify size prec] #

readPrec :: ReadPrec (Amplify size prec) #

readListPrec :: ReadPrec [Amplify size prec] #

Show prec => Show (Amplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.Prelude

Methods

showsPrec :: Int -> Amplify size prec -> ShowS #

show :: Amplify size prec -> String #

showList :: [Amplify size prec] -> ShowS #

Eq prec => Eq (Amplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.Prelude

Methods

(==) :: Amplify size prec -> Amplify size prec -> Bool #

(/=) :: Amplify size prec -> Amplify size prec -> Bool #

(Show prec, Fractional prec) => SerializePrim (Amplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.Prelude

Methods

primNames :: [Ident] #

primNameOf :: Amplify size prec -> Ident #

parsePrimParams :: TokenParser () -> Ident -> Parser (Amplify size prec) #

printPrimParams :: Amplify size prec -> [String] #

MapSize (Amplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.Prelude

Associated Types

type MappedSize (Amplify size prec) size' #

Methods

mapSize :: (size0 ~ SizeType (Amplify size prec), size' ~ SizeType ext', ext' ~ MappedSize (Amplify size prec) size') => (size0 -> size') -> Amplify size prec -> ext' #

TypingReqs size => TypeCheckPrim (Amplify size prec) size # 
Instance details

Defined in Traq.Primitives.Amplify.Prelude

Methods

inferRetTypesPrim :: forall ext' shape m. (m ~ TypeChecker ext', size ~ SizeType ext', shape ~ PrimFnShape (Amplify size prec)) => Amplify size prec -> shape (FnType size) -> m [VarType size] #

(Ord prec, size ~ SizeT, EvalReqs size prec) => EvalPrim (Amplify size prec) size prec #

Evaluate an amplify call by evaluating the sampler f to get distribution μ and get success probability Psucc := P(b=1) conditioned on μ. Finally, returning the distribution based on Psucc.

Instance details

Defined in Traq.Primitives.Amplify.Prelude

Methods

evalPrim :: forall ext' shape m. (Evaluatable ext' size prec, m ~ Evaluator ext', SizeType ext' ~ size, PrecType ext' ~ prec, shape ~ PrimFnShape (Amplify size prec)) => Amplify size prec -> shape ([Value size] -> m [Value size]) -> m [Value size] #

(Amplify size prec) :<: (CAmplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.CAmplify

Methods

inject :: Amplify size prec -> CAmplify size prec #

project :: CAmplify size prec -> Maybe (Amplify size prec) #

(Amplify size prec) :<: (QAmplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.QAmplify

Methods

inject :: Amplify size prec -> QAmplify size prec #

project :: QAmplify size prec -> Maybe (Amplify size prec) #

type PrecType (Amplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.Prelude

type PrecType (Amplify size prec) = prec
type SizeType (Amplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.Prelude

type SizeType (Amplify size prec) = size
type PrimFnShape (Amplify size prec) # 
Instance details

Defined in Traq.Primitives.Amplify.Prelude

type PrimFnShape (Amplify size prec) = SamplerFn
type MappedSize (Amplify size prec) size' # 
Instance details

Defined in Traq.Primitives.Amplify.Prelude

type MappedSize (Amplify size prec) size' = Amplify size' prec

newtype SamplerFn a #

Constructors

SamplerFn a 

Instances

Instances details
ValidPrimShape SamplerFn # 
Instance details

Defined in Traq.Primitives.Amplify.Prelude

Methods

listToShape :: [a] -> Either String (SamplerFn a) #

shapeToList :: SamplerFn a -> [a] #