| Safe Haskell | Safe |
|---|---|
| Language | Haskell2010 |
Traq.ProtoLang.Syntax
Synopsis
- data MetaParam sizeT
- newtype VarType sizeT = Fin sizeT
- _Fin :: Traversal' (VarType sizeT) sizeT
- data Value sizeT = FinV sizeT
- data UnOp = NotOp
- data BinOp
- data NAryOp = MultiOrOp
- data BasicExpr sizeT
- (.<=.) :: BasicExpr sizeT -> BasicExpr sizeT -> BasicExpr sizeT
- notE :: BasicExpr sizeT -> BasicExpr sizeT
- (.+.) :: BasicExpr sizeT -> BasicExpr sizeT -> BasicExpr sizeT
- (.&&.) :: BasicExpr sizeT -> BasicExpr sizeT -> BasicExpr sizeT
- data FunctionCallKind primT
- = FunctionCall Ident
- | PrimitiveCall {
- prim :: primT
- data Expr primT sizeT
- = BasicExprE {
- basic_expr :: BasicExpr sizeT
- | FunCallE {
- fun_kind :: FunctionCallKind primT
- args :: [Ident]
- = BasicExprE {
- data Stmt primT sizeT
- data FunBody primT sizeT = FunBody {
- param_names, ret_names :: [Ident]
- body_stmt :: Stmt primT sizeT
- data FunDef primT sizeT = FunDef {}
- data NamedFunDef primT sizeT = NamedFunDef {}
- type FunCtx primT sizeT = Context (FunDef primT sizeT)
- data Program primT sizeT = Program {}
- class HasFunCtx p where
- _funCtx :: (primT ~ PrimitiveType p, sizeT ~ SizeType p) => Lens' p (FunCtx primT sizeT)
Syntax
Compile-time constant parameters
Basic Types
Types
Constructors
| Fin sizeT |
Instances
| Functor VarType # | |
| Eq sizeT => Eq (VarType sizeT) # | |
| Read sizeT => Read (VarType sizeT) # | |
| Show sizeT => Show (VarType sizeT) # | |
| Show a => ToCodeString (VarType a) # | |
Defined in Traq.ProtoLang.Syntax | |
| HasTypingCtx (TypingCtx sizeT) # | |
Defined in Traq.ProtoLang.TypeCheck | |
| type SizeType (VarType sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
_Fin :: Traversal' (VarType sizeT) sizeT #
Basic Values
Constructors
| FinV sizeT | value of type |
Instances
| Functor Value # | |
| Eq sizeT => Eq (Value sizeT) # | |
| Read sizeT => Read (Value sizeT) # | |
| Show sizeT => Show (Value sizeT) # | |
| Show sizeT => ToCodeString (Value sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
| HasFunInterpCtx (FunInterpCtx sizeT) # | |
Defined in Traq.ProtoLang.Eval Methods _funInterpCtx :: sizeT0 ~ SizeType (FunInterpCtx sizeT) => Lens' (FunInterpCtx sizeT) (FunInterpCtx sizeT0) # | |
| HasProgramState (ProgramState sizeT) # | |
Defined in Traq.ProtoLang.Eval Methods _state :: sizeT0 ~ SizeType (ProgramState sizeT) => Lens' (ProgramState sizeT) (ProgramState sizeT0) # | |
| type SizeType (Value sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
| type SizeType (FunInterp sizeT) # | |
Defined in Traq.ProtoLang.Eval | |
Basic Operations
Unary operations
Constructors
| NotOp |
Binary operations
Operations which take multiple arguments
Constructors
| MultiOrOp |
Basic arithmetic and logical expressions
Instances
| Functor BasicExpr # | |
| Eq sizeT => Eq (BasicExpr sizeT) # | |
| Read sizeT => Read (BasicExpr sizeT) # | |
| Show sizeT => Show (BasicExpr sizeT) # | |
| IsString (BasicExpr sizeT) # | |
Defined in Traq.ProtoLang.Syntax Methods fromString :: String -> BasicExpr sizeT Source # | |
| Show sizeT => ToCodeString (BasicExpr sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
Calls and Primitives
data FunctionCallKind primT #
Either call an existing function, or an existing primitive.
Constructors
| FunctionCall Ident | |
| PrimitiveCall | |
Fields
| |
Instances
| Eq primT => Eq (FunctionCallKind primT) # | |
Defined in Traq.ProtoLang.Syntax Methods (==) :: FunctionCallKind primT -> FunctionCallKind primT -> Bool Source # (/=) :: FunctionCallKind primT -> FunctionCallKind primT -> Bool Source # | |
| Read primT => Read (FunctionCallKind primT) # | |
Defined in Traq.ProtoLang.Syntax Methods readsPrec :: Int -> ReadS (FunctionCallKind primT) Source # readList :: ReadS [FunctionCallKind primT] Source # readPrec :: ReadPrec (FunctionCallKind primT) Source # readListPrec :: ReadPrec [FunctionCallKind primT] Source # | |
| Show primT => Show (FunctionCallKind primT) # | |
Defined in Traq.ProtoLang.Syntax | |
| ToCodeString primT => ToCodeString (FunctionCallKind primT) # | |
Defined in Traq.ProtoLang.Syntax Methods build :: (MonadWriter [String] m, MonadFail m) => FunctionCallKind primT -> m () # | |
| type PrimitiveType (FunctionCallKind primT) # | |
Defined in Traq.ProtoLang.Syntax | |
Expressions and Statements
An expression in the prototype language. It appears as the RHS of an assignment statement.
Constructors
| BasicExprE | |
Fields
| |
| FunCallE | |
Fields
| |
Instances
| Functor (Expr primT) # | |
| (Eq sizeT, Eq primT) => Eq (Expr primT sizeT) # | |
| (Read sizeT, Read primT) => Read (Expr primT sizeT) # | |
| (Show sizeT, Show primT) => Show (Expr primT sizeT) # | |
| (Show sizeT, ToCodeString primT) => ToCodeString (Expr primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
| HasNeedsEps (Expr primT sizeT) # | |
Defined in Traq.ProtoLang.Cost Methods needsEps :: (primT0 ~ PrimitiveType (Expr primT sizeT), sizeT0 ~ SizeType (Expr primT sizeT), MonadReader env m, HasFunCtx env, sizeT0 ~ SizeType env, primT0 ~ PrimitiveType env) => Expr primT sizeT -> m Bool # | |
| type PrimitiveType (Expr primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
| type SizeType (Expr primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
A statement in the prototype language.
Constructors
| ExprS | |
| IfThenElseS | |
| SeqS [Stmt primT sizeT] | |
Instances
| Functor (Stmt primT) # | |
| (Eq sizeT, Eq primT) => Eq (Stmt primT sizeT) # | |
| (Read sizeT, Read primT) => Read (Stmt primT sizeT) # | |
| (Show sizeT, Show primT) => Show (Stmt primT sizeT) # | |
| HasAst (Stmt primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax Methods _ast :: Traversal' (Stmt primT sizeT) (Stmt primT sizeT) # | |
| (Show sizeT, ToCodeString primT) => ToCodeString (Stmt primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
| HasNeedsEps (Stmt primT sizeT) # | |
Defined in Traq.ProtoLang.Cost Methods needsEps :: (primT0 ~ PrimitiveType (Stmt primT sizeT), sizeT0 ~ SizeType (Stmt primT sizeT), MonadReader env m, HasFunCtx env, sizeT0 ~ SizeType env, primT0 ~ PrimitiveType env) => Stmt primT sizeT -> m Bool # | |
| HasStmt (Program primT sizeT) (Stmt primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax Methods _stmt :: Traversal' (Program primT sizeT) (Stmt primT sizeT) # | |
| HasStmt (FunDef primT sizeT) (Stmt primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax Methods _stmt :: Traversal' (FunDef primT sizeT) (Stmt primT sizeT) # | |
| HasStmt (FunBody primT sizeT) (Stmt primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax Methods _stmt :: Traversal' (FunBody primT sizeT) (Stmt primT sizeT) # | |
| HasStmt (Stmt primT sizeT) (Stmt primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax Methods _stmt :: Traversal' (Stmt primT sizeT) (Stmt primT sizeT) # | |
| type PrimitiveType (Stmt primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
| type SizeType (Stmt primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
The body of a function.
Instances
| Functor (FunBody primT) # | |
| (Eq sizeT, Eq primT) => Eq (FunBody primT sizeT) # | |
| (Read sizeT, Read primT) => Read (FunBody primT sizeT) # | |
| (Show sizeT, Show primT) => Show (FunBody primT sizeT) # | |
| HasStmt (FunBody primT sizeT) (Stmt primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax Methods _stmt :: Traversal' (FunBody primT sizeT) (Stmt primT sizeT) # | |
| type PrimitiveType (FunBody primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
| type SizeType (FunBody primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
A function definition or declaration in the prototype language.
Constructors
| FunDef | |
Instances
| Functor (FunDef primT) # | |
| (Eq sizeT, Eq primT) => Eq (FunDef primT sizeT) # | |
| (Read sizeT, Read primT) => Read (FunDef primT sizeT) # | |
| (Show sizeT, Show primT) => Show (FunDef primT sizeT) # | |
| HasFunCtx (FunCtx primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
| HasNeedsEps (FunDef primT sizeT) # | |
Defined in Traq.ProtoLang.Cost Methods needsEps :: (primT0 ~ PrimitiveType (FunDef primT sizeT), sizeT0 ~ SizeType (FunDef primT sizeT), MonadReader env m, HasFunCtx env, sizeT0 ~ SizeType env, primT0 ~ PrimitiveType env) => FunDef primT sizeT -> m Bool # | |
| HasStmt (FunDef primT sizeT) (Stmt primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax Methods _stmt :: Traversal' (FunDef primT sizeT) (Stmt primT sizeT) # | |
| type PrimitiveType (FunDef primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
| type SizeType (FunDef primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
data NamedFunDef primT sizeT #
A function with a name
Constructors
| NamedFunDef | |
Instances
type FunCtx primT sizeT = Context (FunDef primT sizeT) #
A function context contains a list of functions
A program is a function context with a statement (which acts like the main)
Instances
| Functor (Program primT) # | |
| (Eq sizeT, Eq primT) => Eq (Program primT sizeT) # | |
| (Read sizeT, Read primT) => Read (Program primT sizeT) # | |
| (Show sizeT, Show primT) => Show (Program primT sizeT) # | |
| (Show sizeT, ToCodeString primT) => ToCodeString (Program primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
| HasFunCtx (Program primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
| HasStmt (Program primT sizeT) (Stmt primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax Methods _stmt :: Traversal' (Program primT sizeT) (Stmt primT sizeT) # | |
| type PrimitiveType (Program primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
| type SizeType (Program primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
Lenses
Instances
| HasFunCtx (Program primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
| HasFunCtx (FunCtx primT sizeT) # | |
Defined in Traq.ProtoLang.Syntax | |
| HasFunCtx (EvaluationEnv primsT sizeT) # | |
Defined in Traq.ProtoLang.Eval Methods _funCtx :: (primT ~ PrimitiveType (EvaluationEnv primsT sizeT), sizeT0 ~ SizeType (EvaluationEnv primsT sizeT)) => Lens' (EvaluationEnv primsT sizeT) (FunCtx primT sizeT0) # | |
| HasFunCtx (QuantumCostEnv primsT sizeT costT) # | |
Defined in Traq.ProtoLang.Cost Methods _funCtx :: (primT ~ PrimitiveType (QuantumCostEnv primsT sizeT costT), sizeT0 ~ SizeType (QuantumCostEnv primsT sizeT costT)) => Lens' (QuantumCostEnv primsT sizeT costT) (FunCtx primT sizeT0) # | |
| HasFunCtx (QuantumMaxCostEnv primT sizeT costT) # | |
Defined in Traq.ProtoLang.Cost Methods _funCtx :: (primT0 ~ PrimitiveType (QuantumMaxCostEnv primT sizeT costT), sizeT0 ~ SizeType (QuantumMaxCostEnv primT sizeT costT)) => Lens' (QuantumMaxCostEnv primT sizeT costT) (FunCtx primT0 sizeT0) # | |
| HasFunCtx (UnitaryCostEnv primT sizeT costT) # | |
Defined in Traq.ProtoLang.Cost Methods _funCtx :: (primT0 ~ PrimitiveType (UnitaryCostEnv primT sizeT costT), sizeT0 ~ SizeType (UnitaryCostEnv primT sizeT costT)) => Lens' (UnitaryCostEnv primT sizeT costT) (FunCtx primT0 sizeT0) # | |