traq

Safe HaskellSafe
LanguageHaskell2010

Traq.ProtoLang.Syntax

Contents

Synopsis

Syntax

data MetaParam sizeT #

Compile-time constant parameters

Constructors

MetaName String 
MetaSize sizeT 
MetaValue Integer 
Instances
Eq sizeT => Eq (MetaParam sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

(==) :: MetaParam sizeT -> MetaParam sizeT -> Bool Source #

(/=) :: MetaParam sizeT -> MetaParam sizeT -> Bool Source #

Read sizeT => Read (MetaParam sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Show sizeT => Show (MetaParam sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

showsPrec :: Int -> MetaParam sizeT -> ShowS Source #

show :: MetaParam sizeT -> String Source #

showList :: [MetaParam sizeT] -> ShowS Source #

Show sizeT => ToCodeString (MetaParam sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

build :: (MonadWriter [String] m, MonadFail m) => MetaParam sizeT -> m () #

Basic Types

newtype VarType sizeT #

Types

Constructors

Fin sizeT 
Instances
Functor VarType # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

fmap :: (a -> b) -> VarType a -> VarType b Source #

(<$) :: a -> VarType b -> VarType a Source #

Eq sizeT => Eq (VarType sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

(==) :: VarType sizeT -> VarType sizeT -> Bool Source #

(/=) :: VarType sizeT -> VarType sizeT -> Bool Source #

Read sizeT => Read (VarType sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Show sizeT => Show (VarType sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

showsPrec :: Int -> VarType sizeT -> ShowS Source #

show :: VarType sizeT -> String Source #

showList :: [VarType sizeT] -> ShowS Source #

Show a => ToCodeString (VarType a) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

build :: (MonadWriter [String] m, MonadFail m) => VarType a -> m () #

HasTypingCtx (TypingCtx sizeT) # 
Instance details

Defined in Traq.ProtoLang.TypeCheck

Methods

_typingCtx :: sizeT0 ~ SizeType (TypingCtx sizeT) => Lens' (TypingCtx sizeT) (TypingCtx sizeT0) #

type SizeType (VarType sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

type SizeType (VarType sizeT) = sizeT

_Fin :: Traversal' (VarType sizeT) sizeT #

data Value sizeT #

Basic Values

Constructors

FinV sizeT

value of type Fin n

Instances
Functor Value # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

fmap :: (a -> b) -> Value a -> Value b Source #

(<$) :: a -> Value b -> Value a Source #

Eq sizeT => Eq (Value sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

(==) :: Value sizeT -> Value sizeT -> Bool Source #

(/=) :: Value sizeT -> Value sizeT -> Bool Source #

Read sizeT => Read (Value sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Show sizeT => Show (Value sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

showsPrec :: Int -> Value sizeT -> ShowS Source #

show :: Value sizeT -> String Source #

showList :: [Value sizeT] -> ShowS Source #

Show sizeT => ToCodeString (Value sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

build :: (MonadWriter [String] m, MonadFail m) => Value sizeT -> m () #

HasFunInterpCtx (FunInterpCtx sizeT) # 
Instance details

Defined in Traq.ProtoLang.Eval

Methods

_funInterpCtx :: sizeT0 ~ SizeType (FunInterpCtx sizeT) => Lens' (FunInterpCtx sizeT) (FunInterpCtx sizeT0) #

HasProgramState (ProgramState sizeT) # 
Instance details

Defined in Traq.ProtoLang.Eval

Methods

_state :: sizeT0 ~ SizeType (ProgramState sizeT) => Lens' (ProgramState sizeT) (ProgramState sizeT0) #

type SizeType (Value sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

type SizeType (Value sizeT) = sizeT
type SizeType (FunInterp sizeT) # 
Instance details

Defined in Traq.ProtoLang.Eval

type SizeType (FunInterp sizeT) = sizeT

Basic Operations

data UnOp #

Unary operations

Constructors

NotOp 
Instances
Eq UnOp # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

(==) :: UnOp -> UnOp -> Bool Source #

(/=) :: UnOp -> UnOp -> Bool Source #

Read UnOp # 
Instance details

Defined in Traq.ProtoLang.Syntax

Show UnOp # 
Instance details

Defined in Traq.ProtoLang.Syntax

ToCodeString UnOp # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

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

data BinOp #

Binary operations

Constructors

AddOp 
LEqOp 
GtOp 
AndOp 
Instances
Eq BinOp # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

(==) :: BinOp -> BinOp -> Bool Source #

(/=) :: BinOp -> BinOp -> Bool Source #

Read BinOp # 
Instance details

Defined in Traq.ProtoLang.Syntax

Show BinOp # 
Instance details

Defined in Traq.ProtoLang.Syntax

ToCodeString BinOp # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

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

data NAryOp #

Operations which take multiple arguments

Constructors

MultiOrOp 
Instances
Eq NAryOp # 
Instance details

Defined in Traq.ProtoLang.Syntax

Read NAryOp # 
Instance details

Defined in Traq.ProtoLang.Syntax

Show NAryOp # 
Instance details

Defined in Traq.ProtoLang.Syntax

ToCodeString NAryOp # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

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

data BasicExpr sizeT #

Basic arithmetic and logical expressions

Constructors

VarE 

Fields

ParamE 

Fields

ConstE 

Fields

UnOpE 

Fields

BinOpE 

Fields

TernaryE 

Fields

NAryE 

Fields

Instances
Functor BasicExpr # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

fmap :: (a -> b) -> BasicExpr a -> BasicExpr b Source #

(<$) :: a -> BasicExpr b -> BasicExpr a Source #

Eq sizeT => Eq (BasicExpr sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

(==) :: BasicExpr sizeT -> BasicExpr sizeT -> Bool Source #

(/=) :: BasicExpr sizeT -> BasicExpr sizeT -> Bool Source #

Read sizeT => Read (BasicExpr sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Show sizeT => Show (BasicExpr sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

showsPrec :: Int -> BasicExpr sizeT -> ShowS Source #

show :: BasicExpr sizeT -> String Source #

showList :: [BasicExpr sizeT] -> ShowS Source #

IsString (BasicExpr sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

fromString :: String -> BasicExpr sizeT Source #

Show sizeT => ToCodeString (BasicExpr sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

build :: (MonadWriter [String] m, MonadFail m) => BasicExpr sizeT -> m () #

(.<=.) :: BasicExpr sizeT -> BasicExpr sizeT -> BasicExpr sizeT #

notE :: BasicExpr sizeT -> BasicExpr sizeT #

(.+.) :: BasicExpr sizeT -> BasicExpr sizeT -> BasicExpr sizeT #

(.&&.) :: BasicExpr sizeT -> BasicExpr sizeT -> BasicExpr sizeT #

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) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Read primT => Read (FunctionCallKind primT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Show primT => Show (FunctionCallKind primT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

ToCodeString primT => ToCodeString (FunctionCallKind primT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

build :: (MonadWriter [String] m, MonadFail m) => FunctionCallKind primT -> m () #

type PrimitiveType (FunctionCallKind primT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

type PrimitiveType (FunctionCallKind primT) = primT

Expressions and Statements

data Expr primT sizeT #

An expression in the prototype language. It appears as the RHS of an assignment statement.

Constructors

BasicExprE 

Fields

FunCallE 

Fields

Instances
Functor (Expr primT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

fmap :: (a -> b) -> Expr primT a -> Expr primT b Source #

(<$) :: a -> Expr primT b -> Expr primT a Source #

(Eq sizeT, Eq primT) => Eq (Expr primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

(==) :: Expr primT sizeT -> Expr primT sizeT -> Bool Source #

(/=) :: Expr primT sizeT -> Expr primT sizeT -> Bool Source #

(Read sizeT, Read primT) => Read (Expr primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

readsPrec :: Int -> ReadS (Expr primT sizeT) Source #

readList :: ReadS [Expr primT sizeT] Source #

readPrec :: ReadPrec (Expr primT sizeT) Source #

readListPrec :: ReadPrec [Expr primT sizeT] Source #

(Show sizeT, Show primT) => Show (Expr primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

showsPrec :: Int -> Expr primT sizeT -> ShowS Source #

show :: Expr primT sizeT -> String Source #

showList :: [Expr primT sizeT] -> ShowS Source #

(Show sizeT, ToCodeString primT) => ToCodeString (Expr primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

build :: (MonadWriter [String] m, MonadFail m) => Expr primT sizeT -> m () #

HasNeedsEps (Expr primT sizeT) # 
Instance details

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) # 
Instance details

Defined in Traq.ProtoLang.Syntax

type PrimitiveType (Expr primT sizeT) = primT
type SizeType (Expr primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

type SizeType (Expr primT sizeT) = sizeT

data Stmt primT sizeT #

A statement in the prototype language.

Constructors

ExprS 

Fields

IfThenElseS 

Fields

SeqS [Stmt primT sizeT] 
Instances
Functor (Stmt primT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

fmap :: (a -> b) -> Stmt primT a -> Stmt primT b Source #

(<$) :: a -> Stmt primT b -> Stmt primT a Source #

(Eq sizeT, Eq primT) => Eq (Stmt primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

(==) :: Stmt primT sizeT -> Stmt primT sizeT -> Bool Source #

(/=) :: Stmt primT sizeT -> Stmt primT sizeT -> Bool Source #

(Read sizeT, Read primT) => Read (Stmt primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

readsPrec :: Int -> ReadS (Stmt primT sizeT) Source #

readList :: ReadS [Stmt primT sizeT] Source #

readPrec :: ReadPrec (Stmt primT sizeT) Source #

readListPrec :: ReadPrec [Stmt primT sizeT] Source #

(Show sizeT, Show primT) => Show (Stmt primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

showsPrec :: Int -> Stmt primT sizeT -> ShowS Source #

show :: Stmt primT sizeT -> String Source #

showList :: [Stmt primT sizeT] -> ShowS Source #

HasAst (Stmt primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

_ast :: Traversal' (Stmt primT sizeT) (Stmt primT sizeT) #

(Show sizeT, ToCodeString primT) => ToCodeString (Stmt primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

build :: (MonadWriter [String] m, MonadFail m) => Stmt primT sizeT -> m () #

HasNeedsEps (Stmt primT sizeT) # 
Instance details

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) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

_stmt :: Traversal' (Program primT sizeT) (Stmt primT sizeT) #

HasStmt (FunDef primT sizeT) (Stmt primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

_stmt :: Traversal' (FunDef primT sizeT) (Stmt primT sizeT) #

HasStmt (FunBody primT sizeT) (Stmt primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

_stmt :: Traversal' (FunBody primT sizeT) (Stmt primT sizeT) #

HasStmt (Stmt primT sizeT) (Stmt primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

_stmt :: Traversal' (Stmt primT sizeT) (Stmt primT sizeT) #

type PrimitiveType (Stmt primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

type PrimitiveType (Stmt primT sizeT) = primT
type SizeType (Stmt primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

type SizeType (Stmt primT sizeT) = sizeT

data FunBody primT sizeT #

The body of a function.

Constructors

FunBody 

Fields

Instances
Functor (FunBody primT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

fmap :: (a -> b) -> FunBody primT a -> FunBody primT b Source #

(<$) :: a -> FunBody primT b -> FunBody primT a Source #

(Eq sizeT, Eq primT) => Eq (FunBody primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

(==) :: FunBody primT sizeT -> FunBody primT sizeT -> Bool Source #

(/=) :: FunBody primT sizeT -> FunBody primT sizeT -> Bool Source #

(Read sizeT, Read primT) => Read (FunBody primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

readsPrec :: Int -> ReadS (FunBody primT sizeT) Source #

readList :: ReadS [FunBody primT sizeT] Source #

readPrec :: ReadPrec (FunBody primT sizeT) Source #

readListPrec :: ReadPrec [FunBody primT sizeT] Source #

(Show sizeT, Show primT) => Show (FunBody primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

showsPrec :: Int -> FunBody primT sizeT -> ShowS Source #

show :: FunBody primT sizeT -> String Source #

showList :: [FunBody primT sizeT] -> ShowS Source #

HasStmt (FunBody primT sizeT) (Stmt primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

_stmt :: Traversal' (FunBody primT sizeT) (Stmt primT sizeT) #

type PrimitiveType (FunBody primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

type PrimitiveType (FunBody primT sizeT) = primT
type SizeType (FunBody primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

type SizeType (FunBody primT sizeT) = sizeT

data FunDef primT sizeT #

A function definition or declaration in the prototype language.

Constructors

FunDef 

Fields

Instances
Functor (FunDef primT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

fmap :: (a -> b) -> FunDef primT a -> FunDef primT b Source #

(<$) :: a -> FunDef primT b -> FunDef primT a Source #

(Eq sizeT, Eq primT) => Eq (FunDef primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

(==) :: FunDef primT sizeT -> FunDef primT sizeT -> Bool Source #

(/=) :: FunDef primT sizeT -> FunDef primT sizeT -> Bool Source #

(Read sizeT, Read primT) => Read (FunDef primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

readsPrec :: Int -> ReadS (FunDef primT sizeT) Source #

readList :: ReadS [FunDef primT sizeT] Source #

readPrec :: ReadPrec (FunDef primT sizeT) Source #

readListPrec :: ReadPrec [FunDef primT sizeT] Source #

(Show sizeT, Show primT) => Show (FunDef primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

showsPrec :: Int -> FunDef primT sizeT -> ShowS Source #

show :: FunDef primT sizeT -> String Source #

showList :: [FunDef primT sizeT] -> ShowS Source #

HasFunCtx (FunCtx primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

_funCtx :: (primT0 ~ PrimitiveType (FunCtx primT sizeT), sizeT0 ~ SizeType (FunCtx primT sizeT)) => Lens' (FunCtx primT sizeT) (FunCtx primT0 sizeT0) #

HasNeedsEps (FunDef primT sizeT) # 
Instance details

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) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

_stmt :: Traversal' (FunDef primT sizeT) (Stmt primT sizeT) #

type PrimitiveType (FunDef primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

type PrimitiveType (FunDef primT sizeT) = primT
type SizeType (FunDef primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

type SizeType (FunDef primT sizeT) = sizeT

data NamedFunDef primT sizeT #

A function with a name

Constructors

NamedFunDef 

Fields

Instances
Functor (NamedFunDef primT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

fmap :: (a -> b) -> NamedFunDef primT a -> NamedFunDef primT b Source #

(<$) :: a -> NamedFunDef primT b -> NamedFunDef primT a Source #

(Eq sizeT, Eq primT) => Eq (NamedFunDef primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

(==) :: NamedFunDef primT sizeT -> NamedFunDef primT sizeT -> Bool Source #

(/=) :: NamedFunDef primT sizeT -> NamedFunDef primT sizeT -> Bool Source #

(Read sizeT, Read primT) => Read (NamedFunDef primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

readsPrec :: Int -> ReadS (NamedFunDef primT sizeT) Source #

readList :: ReadS [NamedFunDef primT sizeT] Source #

readPrec :: ReadPrec (NamedFunDef primT sizeT) Source #

readListPrec :: ReadPrec [NamedFunDef primT sizeT] Source #

(Show sizeT, Show primT) => Show (NamedFunDef primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

showsPrec :: Int -> NamedFunDef primT sizeT -> ShowS Source #

show :: NamedFunDef primT sizeT -> String Source #

showList :: [NamedFunDef primT sizeT] -> ShowS Source #

(Show sizeT, ToCodeString primT) => ToCodeString (NamedFunDef primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

build :: (MonadWriter [String] m, MonadFail m) => NamedFunDef primT sizeT -> m () #

type PrimitiveType (NamedFunDef primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

type PrimitiveType (NamedFunDef primT sizeT) = primT
type SizeType (NamedFunDef primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

type SizeType (NamedFunDef primT sizeT) = sizeT

type FunCtx primT sizeT = Context (FunDef primT sizeT) #

A function context contains a list of functions

data Program primT sizeT #

A program is a function context with a statement (which acts like the main)

Constructors

Program 

Fields

Instances
Functor (Program primT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

fmap :: (a -> b) -> Program primT a -> Program primT b Source #

(<$) :: a -> Program primT b -> Program primT a Source #

(Eq sizeT, Eq primT) => Eq (Program primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

(==) :: Program primT sizeT -> Program primT sizeT -> Bool Source #

(/=) :: Program primT sizeT -> Program primT sizeT -> Bool Source #

(Read sizeT, Read primT) => Read (Program primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

readsPrec :: Int -> ReadS (Program primT sizeT) Source #

readList :: ReadS [Program primT sizeT] Source #

readPrec :: ReadPrec (Program primT sizeT) Source #

readListPrec :: ReadPrec [Program primT sizeT] Source #

(Show sizeT, Show primT) => Show (Program primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

showsPrec :: Int -> Program primT sizeT -> ShowS Source #

show :: Program primT sizeT -> String Source #

showList :: [Program primT sizeT] -> ShowS Source #

(Show sizeT, ToCodeString primT) => ToCodeString (Program primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

build :: (MonadWriter [String] m, MonadFail m) => Program primT sizeT -> m () #

HasFunCtx (Program primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

_funCtx :: (primT0 ~ PrimitiveType (Program primT sizeT), sizeT0 ~ SizeType (Program primT sizeT)) => Lens' (Program primT sizeT) (FunCtx primT0 sizeT0) #

HasStmt (Program primT sizeT) (Stmt primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

_stmt :: Traversal' (Program primT sizeT) (Stmt primT sizeT) #

type PrimitiveType (Program primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

type PrimitiveType (Program primT sizeT) = primT
type SizeType (Program primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

type SizeType (Program primT sizeT) = sizeT

Lenses

class HasFunCtx p where #

Methods

_funCtx :: (primT ~ PrimitiveType p, sizeT ~ SizeType p) => Lens' p (FunCtx primT sizeT) #

Instances
HasFunCtx (Program primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

_funCtx :: (primT0 ~ PrimitiveType (Program primT sizeT), sizeT0 ~ SizeType (Program primT sizeT)) => Lens' (Program primT sizeT) (FunCtx primT0 sizeT0) #

HasFunCtx (FunCtx primT sizeT) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

_funCtx :: (primT0 ~ PrimitiveType (FunCtx primT sizeT), sizeT0 ~ SizeType (FunCtx primT sizeT)) => Lens' (FunCtx primT sizeT) (FunCtx primT0 sizeT0) #

HasFunCtx (EvaluationEnv primsT sizeT) # 
Instance details

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) # 
Instance details

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) # 
Instance details

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) # 
Instance details

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) #