traq
Safe HaskellSafe-Inferred
LanguageHaskell2010

Traq.Primitives.Class

Synopsis

Documentation

data Primitive prim #

A generic second-order primitive. It accepts a sequence of partially applied functions.

Authors are provided with simpler type classes to implement the features: typing, semantics and query costs.

Constructors

Primitive [PartialFun] prim 

Instances

Instances details
Show prim => Show (Primitive prim) # 
Instance details

Defined in Traq.Primitives.Class

Methods

showsPrec :: Int -> Primitive prim -> ShowS #

show :: Primitive prim -> String #

showList :: [Primitive prim] -> ShowS #

Eq prim => Eq (Primitive prim) # 
Instance details

Defined in Traq.Primitives.Class

Methods

(==) :: Primitive prim -> Primitive prim -> Bool #

(/=) :: Primitive prim -> Primitive prim -> Bool #

(UnitaryCostPrim prim size prec, QuantumHavocCostPrim prim size prec) => AnnotateWithErrorBudgetQ (Primitive prim) # 
Instance details

Defined in Traq.Primitives.Class

Methods

annEpsQ :: (ext' ~ AnnFailProb (Primitive prim), size ~ SizeType (Primitive prim), prec ~ PrecType (Primitive prim), ErrorReqs size prec, m ~ AnnotateMonad (Primitive prim) ext') => FailProb prec -> ext' -> m ext' #

UnitaryCostPrim prim size prec => AnnotateWithErrorBudgetU (Primitive prim) # 
Instance details

Defined in Traq.Primitives.Class

Methods

annEpsU :: (ext' ~ AnnFailProb (Primitive prim), size ~ SizeType (Primitive prim), prec ~ PrecType (Primitive prim), ErrorReqs size prec, m ~ AnnotateMonad (Primitive prim) ext') => FailProb prec -> ext' -> m ext' #

(Integral sizeT, Floating precT, RealFloat precT, TypingReqs sizeT, Show precT, sizeT ~ SizeT) => CompileQ (AnnFailProb (DefaultPrims sizeT precT)) # 
Instance details

Defined in Traq.Primitives

Methods

compileQ :: forall ext' m. (m ~ CompilerT ext', SizeType (AnnFailProb (DefaultPrims sizeT precT)) ~ SizeType ext', PrecType (AnnFailProb (DefaultPrims sizeT precT)) ~ PrecType ext', CompileQ ext') => AnnFailProb (DefaultPrims sizeT precT) -> [Ident] -> m (Stmt (SizeType (AnnFailProb (DefaultPrims sizeT precT)))) #

(Integral sizeT, RealFloat precT, sizeT ~ SizeT, Show sizeT, Show precT, TypingReqs sizeT) => CompileQ (AnnFailProb (Primitive (QSearchCFNW sizeT precT))) # 
Instance details

Defined in Traq.Primitives.Search.QSearchCFNW

Methods

compileQ :: forall ext' m. (m ~ CompilerT ext', SizeType (AnnFailProb (Primitive (QSearchCFNW sizeT precT))) ~ SizeType ext', PrecType (AnnFailProb (Primitive (QSearchCFNW sizeT precT))) ~ PrecType ext', CompileQ ext') => AnnFailProb (Primitive (QSearchCFNW sizeT precT)) -> [Ident] -> m (Stmt (SizeType (AnnFailProb (Primitive (QSearchCFNW sizeT precT))))) #

(Integral sizeT, Floating precT, RealFloat precT, TypingReqs sizeT, Show precT, SizeToPrec sizeT precT) => CompileU (AnnFailProb (DefaultPrims sizeT precT)) # 
Instance details

Defined in Traq.Primitives

Methods

compileU :: forall ext' m. (m ~ CompilerT ext', SizeType (AnnFailProb (DefaultPrims sizeT precT)) ~ SizeType ext', PrecType (AnnFailProb (DefaultPrims sizeT precT)) ~ PrecType ext') => AnnFailProb (DefaultPrims sizeT precT) -> [Ident] -> m (UStmt (SizeType (AnnFailProb (DefaultPrims sizeT precT)))) #

(Integral sizeT, RealFloat precT, Show sizeT, Show precT, TypingReqs sizeT, SizeToPrec sizeT precT) => CompileU (AnnFailProb (Primitive (QSearchCFNW sizeT precT))) # 
Instance details

Defined in Traq.Primitives.Search.QSearchCFNW

Methods

compileU :: forall ext' m. (m ~ CompilerT ext', SizeType (AnnFailProb (Primitive (QSearchCFNW sizeT precT))) ~ SizeType ext', PrecType (AnnFailProb (Primitive (QSearchCFNW sizeT precT))) ~ PrecType ext') => AnnFailProb (Primitive (QSearchCFNW sizeT precT)) -> [Ident] -> m (UStmt (SizeType (AnnFailProb (Primitive (QSearchCFNW sizeT precT))))) #

MapSize prim => MapSize (Primitive prim) # 
Instance details

Defined in Traq.Primitives.Class

Associated Types

type MappedSize (Primitive prim) size' #

Methods

mapSize :: (size ~ SizeType (Primitive prim), size' ~ SizeType ext', ext' ~ MappedSize (Primitive prim) size') => (size -> size') -> Primitive prim -> ext' #

(SerializePrim prim, SizeType prim ~ Sym SizeT) => Parseable (Primitive prim) # 
Instance details

Defined in Traq.Primitives.Class

Methods

parseE :: TokenParser () -> Parser (Primitive prim) #

HasFreeVars (Primitive prim) # 
Instance details

Defined in Traq.Primitives.Class

Methods

freeVarsList :: Primitive prim -> [Ident] #

RenameVars (Primitive p) # 
Instance details

Defined in Traq.Primitives.Class

Methods

renameVars :: Ident -> Primitive p -> Primitive p #

SerializePrim prim => ToCodeString (Primitive prim) # 
Instance details

Defined in Traq.Primitives.Class

Methods

build :: (MonadWriter [String] m, MonadFail m) => Primitive prim -> m () #

(TypeCheckPrim prim size, TypingReqs size) => TypeInferrable (Primitive prim) size # 
Instance details

Defined in Traq.Primitives.Class

Methods

inferTypes :: forall ext' m. (m ~ TypeChecker ext', size ~ SizeType ext') => Primitive prim -> m [VarType size] #

(UnitaryCostPrim prim size prec, QuantumHavocCostPrim prim size prec, CostReqs size prec) => CostQ (AnnFailProb (Primitive prim)) size prec # 
Instance details

Defined in Traq.Primitives.Class

Methods

costQ :: forall ext' cost m. (m ~ CostAnalysisMonad ext', CostQ ext' size prec, CostModelReqs size prec cost) => AnnFailProb (Primitive prim) -> m cost #

(UnitaryCostPrim prim size prec, QuantumHavocCostPrim prim size prec, QuantumExpCostPrim prim size prec, EvalPrim prim size prec, CostReqs size prec, EvalReqs size prec) => ExpCostQ (AnnFailProb (Primitive prim)) size prec # 
Instance details

Defined in Traq.Primitives.Class

Methods

expCostQ :: forall ext' cost m. (m ~ CostAnalysisMonad ext', ExpCostQ ext' size prec, CostModelReqs size prec cost) => AnnFailProb (Primitive prim) -> ProgramState size -> m cost #

(UnitaryCostPrim prim size prec, CostReqs size prec) => CostU (AnnFailProb (Primitive prim)) size prec # 
Instance details

Defined in Traq.Primitives.Class

Methods

costU :: forall ext' costT m. (m ~ CostAnalysisMonad ext', CostU ext' size prec, CostModelReqs size prec costT) => AnnFailProb (Primitive prim) -> m costT #

(UnitaryCostPrim prim size prec, QuantumHavocCostPrim prim size prec, ErrorReqs size prec) => TVErrorQ (AnnFailProb (Primitive prim)) size prec # 
Instance details

Defined in Traq.Primitives.Class

Methods

tvErrorQ :: forall ext' m. (m ~ ErrorAnalysisMonad ext', TVErrorQ ext' size prec, SizeType ext' ~ size, PrecType ext' ~ prec) => AnnFailProb (Primitive prim) -> m (FailProb prec) #

(UnitaryCostPrim prim size prec, ErrorReqs size prec) => TraceNormErrorU (AnnFailProb (Primitive prim)) size prec # 
Instance details

Defined in Traq.Primitives.Class

Methods

traceNormErrorU :: forall ext' m. (m ~ ErrorAnalysisMonad ext', TraceNormErrorU ext' size prec, SizeType ext' ~ size, PrecType ext' ~ prec) => AnnFailProb (Primitive prim) -> m (FailProb prec) #

(EvalPrim prim size prec, EvalReqs size prec) => Evaluatable (Primitive prim) size prec # 
Instance details

Defined in Traq.Primitives.Class

Methods

eval :: (Evaluatable ext' size prec, m ~ Evaluator ext', SizeType ext' ~ size, PrecType ext' ~ prec) => Primitive prim -> ProgramState size -> m [Value size] #

type PrecType (Primitive p) # 
Instance details

Defined in Traq.Primitives.Class

type SizeType (Primitive p) # 
Instance details

Defined in Traq.Primitives.Class

type MappedSize (Primitive prim) size' # 
Instance details

Defined in Traq.Primitives.Class

type MappedSize (Primitive prim) size' = Primitive (MappedSize prim size')