| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Env
Description
This implements the model environments that users must provide upon running a model; such environments assign traces of values to the "observable variables" (random variables which can be conditioned against) of a model.
Synopsis
- data ObsVar (x :: Symbol) where
- ObsVar :: KnownSymbol x => ObsVar x
- varToStr :: forall x. ObsVar x -> String
- data Assign x a = x := a
- data Env (env :: [Assign Symbol *]) where
- (<:>) :: UniqueKey x env ~ True => Assign (ObsVar x) [a] -> Env env -> Env ((x := a) ': env)
- nil :: Env '[]
- class (FindElem x env, LookupType x env ~ a) => Observable env x a where
- type family Observables env (ks :: [Symbol]) a :: Constraint where ...
- type family UniqueKey x env where ...
- type family LookupType x env where ...
Observable variable
data ObsVar (x :: Symbol) where Source #
Containers for observable variables
Constructors
| ObsVar :: KnownSymbol x => ObsVar x |
varToStr :: forall x. ObsVar x -> String Source #
Convert an observable variable from a type-level string to a value-level string
Model environment
Assign or associate a variable x with a value of type a
Constructors
| x := a |
Instances
| FindElem x2 env => FindElem (x2 :: k) ((x' := a2) ': env :: [Assign x1 a1]) Source # | |
| FindElem (x2 :: x1) ((x2 := a2) ': env :: [Assign x1 a1]) Source # | |
| (KnownSymbol x, Show a, Show (Env env)) => Show (Env ((x := a) ': env)) Source # | |
| Show (Env ('[] :: [Assign Symbol Type])) Source # | |
| FromSTrace ('[] :: [Assign Symbol Type]) Source # | |
| (UniqueKey x env ~ 'True, KnownSymbol x, Eq a, Member a PrimVal, FromSTrace env) => FromSTrace ((x := a) ': env) Source # | |
data Env (env :: [Assign Symbol *]) where Source #
A model environment assigning traces (lists) of observed values to observable
variables i.e. the type Env ((x := a) : env) indicates x is assigned a value
of type [a].
(<:>) :: UniqueKey x env ~ True => Assign (ObsVar x) [a] -> Env env -> Env ((x := a) ': env) infixr 5 Source #
Prepend a variable assignment to a model environment
class (FindElem x env, LookupType x env ~ a) => Observable env x a where Source #
Specifies that an environment Env env has an observable variable x whose observed values are of type a
type family Observables env (ks :: [Symbol]) a :: Constraint where ... Source #
For each observable variable x in xs, construct the constraint Observable env x a
Equations
| Observables env (x ': xs) a = (Observable env x a, Observables env xs a) | |
| Observables env '[] a = () |
type family UniqueKey x env where ... Source #
Check whether an observable variable x is unique in model environment env
type family LookupType x env where ... Source #
Retrieve the type of an observable variable x from an environment env
Equations
| LookupType x ((x := a) ': env) = a | |
| LookupType x ((x' := a) ': env) = LookupType x env |