| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Traq.ProtoLang.Eval
Synopsis
- type ProgramState size = Context (Value size)
- class HasProgramState p where
- _state :: size ~ SizeType p => Lens' p (ProgramState size)
- evalBasicExpr :: (MonadReader env m, HasProgramState env, size ~ SizeType env, size ~ SizeT) => BasicExpr size -> m (Value size)
- runProgram :: forall ext prec m. (Evaluatable ext SizeT prec, EvalReqs SizeT prec, m ~ EvaluationMonad prec) => Program ext -> FunInterpCtx SizeT -> [Value SizeT] -> m [Value SizeT]
- defaultV :: forall size. size ~ SizeT => VarType size -> Value size
- validateValueType :: forall size. size ~ SizeT => VarType size -> Value size -> Bool
- class CoerceValue t where
- safeToValue :: t -> Maybe (Value SizeT)
- safeFromValue :: Value SizeT -> Maybe t
- toValue :: CoerceValue t => t -> Value SizeT
- fromValue :: CoerceValue t => Value SizeT -> t
- valueToBool :: Value SizeT -> Bool
- domainSize :: Integral size => VarType size -> size
- bitsize :: Num size => VarType size -> Maybe size
- domain :: Integral size => VarType size -> [Value size]
- type EvaluationMonad prec = ExpMonad prec
- class (EvalReqs size prec, size ~ SizeType ext, prec ~ PrecType ext) => Evaluatable ext size prec | ext -> size prec where
- eval :: forall ext' m. (Evaluatable ext' size prec, m ~ Evaluator ext', SizeType ext' ~ size, PrecType ext' ~ prec) => ext -> ProgramState size -> m [Value size]
- type EvalReqs size prec = (size ~ SizeT, ProbType prec, RVType prec prec, Fractional prec)
- type family EvalArgs f ext
- eval1 :: forall ext size prec m. (Eval1 f, Evaluatable ext size prec, m ~ Evaluator ext) => f ext -> EvalArgs f ext -> m (EvalRets f ext)
- type FunInterp size = [Value size] -> [Value size]
- type FunInterpCtx size = Map Ident (FunInterp size)
- class HasFunInterpCtx p where
- _funInterpCtx :: size ~ SizeType p => Lens' p (FunInterpCtx size)
- data EvaluationEnv ext
- class HasEvaluationEnv p ext | p -> ext where
- _evaluationEnv :: Lens' p (EvaluationEnv ext)
- type Evaluator ext = ReaderT (EvaluationEnv ext) (EvaluationMonad (PrecType ext))
Evaluating Basic Expressions
type ProgramState size = Context (Value size) #
The deterministic state of the program
class HasProgramState p where #
Instances
| HasProgramState (ProgramState size) # | |
Defined in Traq.ProtoLang.Eval Methods _state :: size0 ~ SizeType (ProgramState size) => Lens' (ProgramState size) (ProgramState size0) # | |
evalBasicExpr :: (MonadReader env m, HasProgramState env, size ~ SizeType env, size ~ SizeT) => BasicExpr size -> m (Value size) #
Evaluations
runProgram :: forall ext prec m. (Evaluatable ext SizeT prec, EvalReqs SizeT prec, m ~ EvaluationMonad prec) => Program ext -> FunInterpCtx SizeT -> [Value SizeT] -> m [Value SizeT] #
Entry-point: run the program (i.e. last function)
Values
validateValueType :: forall size. size ~ SizeT => VarType size -> Value size -> Bool #
Check if a given runtime value is of a given type.
class CoerceValue t where #
Coerce a haskell value into our value type.
Methods
safeToValue :: t -> Maybe (Value SizeT) #
safely convert a runtime value to Value.
safeFromValue :: Value SizeT -> Maybe t #
safely convert a Value to a runtime value.
Instances
| CoerceValue Bool # | |
Defined in Traq.ProtoLang.Eval | |
| CoerceValue Int # | |
Defined in Traq.ProtoLang.Eval | |
| CoerceValue a => CoerceValue [a] # | |
Defined in Traq.ProtoLang.Eval | |
toValue :: CoerceValue t => t -> Value SizeT #
Convert an input into Value
fromValue :: CoerceValue t => Value SizeT -> t #
Convert a Value to the given type.
valueToBool :: Value SizeT -> Bool #
domainSize :: Integral size => VarType size -> size #
Size of the value set of a given type.
Types and Monad
type EvaluationMonad prec = ExpMonad prec #
Base probability monad to evaluate the program.
class (EvalReqs size prec, size ~ SizeType ext, prec ~ PrecType ext) => Evaluatable ext size prec | ext -> size prec where #
Primitives that support evaluation.
Minimal complete definition
Nothing
Methods
eval :: forall ext' m. (Evaluatable ext' size prec, m ~ Evaluator ext', SizeType ext' ~ size, PrecType ext' ~ prec) => ext -> ProgramState size -> m [Value size] #
Instances
| Evaluatable ext size prec => Evaluatable (AnnFailProb ext) size prec # | |
Defined in Traq.Analysis.Annotate.Prelude Methods eval :: (Evaluatable ext' size prec, m ~ Evaluator ext', SizeType ext' ~ size, PrecType ext' ~ prec) => AnnFailProb ext -> ProgramState size -> m [Value size] # | |
| (EvalPrim prim size prec, EvalReqs size prec) => Evaluatable (Primitive prim) size prec # | |
Defined in Traq.Primitives.Class | |
| EvalReqs SizeT prec => Evaluatable (TreeSearch SizeT prec) SizeT prec # | |
Defined in Traq.Primitives.TreeSearch | |
| EvalReqs SizeT prec => Evaluatable (Core SizeT prec) SizeT prec # | |
type EvalReqs size prec = (size ~ SizeT, ProbType prec, RVType prec prec, Fractional prec) #
Constraints to be satisfied to support evaluation.
Instances
| type EvalArgs Expr ext # | |
Defined in Traq.ProtoLang.Eval | |
| type EvalArgs FunBody ext # | |
Defined in Traq.ProtoLang.Eval | |
| type EvalArgs NamedFunDef ext # | |
Defined in Traq.ProtoLang.Eval | |
| type EvalArgs Program ext # | |
Defined in Traq.ProtoLang.Eval | |
| type EvalArgs Stmt ext # | |
Defined in Traq.ProtoLang.Eval | |
eval1 :: forall ext size prec m. (Eval1 f, Evaluatable ext size prec, m ~ Evaluator ext) => f ext -> EvalArgs f ext -> m (EvalRets f ext) #
Evaluation
type FunInterpCtx size = Map Ident (FunInterp size) #
A mapping of data intepretations
class HasFunInterpCtx p where #
Methods
_funInterpCtx :: size ~ SizeType p => Lens' p (FunInterpCtx size) #
Instances
| HasFunInterpCtx (EvaluationEnv ext) # | |
Defined in Traq.ProtoLang.Eval Methods _funInterpCtx :: size ~ SizeType (EvaluationEnv ext) => Lens' (EvaluationEnv ext) (FunInterpCtx size) # | |
| HasFunInterpCtx (FunInterpCtx size) # | |
Defined in Traq.ProtoLang.Eval Methods _funInterpCtx :: size0 ~ SizeType (FunInterpCtx size) => Lens' (FunInterpCtx size) (FunInterpCtx size0) # | |
data EvaluationEnv ext #
Environment for evaluation
Instances
class HasEvaluationEnv p ext | p -> ext where #
Methods
_evaluationEnv :: Lens' p (EvaluationEnv ext) #
Instances
| HasEvaluationEnv (EvaluationEnv ext) ext # | |
Defined in Traq.ProtoLang.Eval Methods _evaluationEnv :: Lens' (EvaluationEnv ext) (EvaluationEnv ext) # | |
type Evaluator ext = ReaderT (EvaluationEnv ext) (EvaluationMonad (PrecType ext)) #
Non-deterministic evaluation monad (i.e. no state)