traq
Safe HaskellSafe-Inferred
LanguageHaskell2010

Traq.CQPL.Syntax

Synopsis

Syntax

data MetaParam size #

Compile-time constant parameters

Constructors

MetaName String 
MetaSize size 

Instances

Instances details
Read size => Read (MetaParam size) # 
Instance details

Defined in Traq.ProtoLang.Syntax

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

Defined in Traq.ProtoLang.Syntax

Methods

showsPrec :: Int -> MetaParam size -> ShowS #

show :: MetaParam size -> String #

showList :: [MetaParam size] -> ShowS #

Eq size => Eq (MetaParam size) # 
Instance details

Defined in Traq.ProtoLang.Syntax

Methods

(==) :: MetaParam size -> MetaParam size -> Bool #

(/=) :: MetaParam size -> MetaParam size -> Bool #

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

Defined in Traq.ProtoLang.Syntax

Methods

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

data Arg size #

An argument (to ops/procs)

Constructors

Arg Ident 
ArrElemArg (Arg size) (MetaParam size) 

Instances

Instances details
Read size => Read (Arg size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

readsPrec :: Int -> ReadS (Arg size) #

readList :: ReadS [Arg size] #

readPrec :: ReadPrec (Arg size) #

readListPrec :: ReadPrec [Arg size] #

Show size => Show (Arg size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

showsPrec :: Int -> Arg size -> ShowS #

show :: Arg size -> String #

showList :: [Arg size] -> ShowS #

Eq size => Eq (Arg size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

(==) :: Arg size -> Arg size -> Bool #

(/=) :: Arg size -> Arg size -> Bool #

Show size => ToCodeString (Arg size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

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

Unitary Fragment

class HasAdjoint a where #

Methods

adjoint :: a -> a #

Instances

Instances details
HasAdjoint BasicGate # 
Instance details

Defined in Traq.CQPL.Syntax

HasAdjoint (UStmt size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

adjoint :: UStmt size -> UStmt size #

HasAdjoint (Unitary size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

adjoint :: Unitary size -> Unitary size #

data BasicGate #

Instances

Instances details
Read BasicGate # 
Instance details

Defined in Traq.CQPL.Syntax

Show BasicGate # 
Instance details

Defined in Traq.CQPL.Syntax

Eq BasicGate # 
Instance details

Defined in Traq.CQPL.Syntax

HasAdjoint BasicGate # 
Instance details

Defined in Traq.CQPL.Syntax

ToCodeString BasicGate # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

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

data Unitary size #

Unitary operators in CQPL

Instances

Instances details
Read size => Read (Unitary size) # 
Instance details

Defined in Traq.CQPL.Syntax

Show size => Show (Unitary size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

showsPrec :: Int -> Unitary size -> ShowS #

show :: Unitary size -> String #

showList :: [Unitary size] -> ShowS #

Eq size => Eq (Unitary size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

(==) :: Unitary size -> Unitary size -> Bool #

(/=) :: Unitary size -> Unitary size -> Bool #

HasAdjoint (Unitary size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

adjoint :: Unitary size -> Unitary size #

Show size => ToCodeString (Unitary size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

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

type SizeType (Unitary size) # 
Instance details

Defined in Traq.CQPL.Syntax

type SizeType (Unitary size) = size

data UStmt size #

Unitary Statement

Constructors

USkipS 
UnitaryS 

Fields

UCallS 

Fields

USeqS [UStmt size] 
UCommentS String 
URepeatS 

Fields

UForInRangeS 

Fields

UForInDomainS 

Fields

UWithComputedS 

Fields

Instances

Instances details
Read size => Read (UStmt size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

readsPrec :: Int -> ReadS (UStmt size) #

readList :: ReadS [UStmt size] #

readPrec :: ReadPrec (UStmt size) #

readListPrec :: ReadPrec [UStmt size] #

Show size => Show (UStmt size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

showsPrec :: Int -> UStmt size -> ShowS #

show :: UStmt size -> String #

showList :: [UStmt size] -> ShowS #

Eq size => Eq (UStmt size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

(==) :: UStmt size -> UStmt size -> Bool #

(/=) :: UStmt size -> UStmt size -> Bool #

HasAdjoint (UStmt size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

adjoint :: UStmt size -> UStmt size #

Show size => ToCodeString (UStmt size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

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

type SizeType (UStmt size) # 
Instance details

Defined in Traq.CQPL.Syntax

type SizeType (UStmt size) = size

Classical Fragment

data FunctionCall #

Type of function call

data Stmt size #

CQ Statement

Constructors

SkipS 
CommentS String 
AssignS 

Fields

RandomS 

Fields

RandomDynS 

Fields

CallS 

Fields

SeqS [Stmt size] 
IfThenElseS 

Fields

RepeatS 

Fields

WhileK 

Fields

WhileKWithCondExpr 

Fields

ForInArray 

Fields

ForInRangeS 

Fields

Instances

Instances details
Read size => Read (Stmt size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

readsPrec :: Int -> ReadS (Stmt size) #

readList :: ReadS [Stmt size] #

readPrec :: ReadPrec (Stmt size) #

readListPrec :: ReadPrec [Stmt size] #

Show size => Show (Stmt size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

showsPrec :: Int -> Stmt size -> ShowS #

show :: Stmt size -> String #

showList :: [Stmt size] -> ShowS #

Eq size => Eq (Stmt size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

(==) :: Stmt size -> Stmt size -> Bool #

(/=) :: Stmt size -> Stmt size -> Bool #

HasAst (Stmt size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

_ast :: Traversal' (Stmt size) (Stmt size) #

HasStmt (Stmt size) # 
Instance details

Defined in Traq.CQPL.Syntax

Associated Types

type StmtOf (Stmt size) #

Methods

_stmt :: Traversal' (Stmt size) (StmtOf (Stmt size)) #

Show size => ToCodeString (Stmt size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

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

type SizeType (Stmt size) # 
Instance details

Defined in Traq.CQPL.Syntax

type SizeType (Stmt size) = size
type StmtOf (Stmt size) # 
Instance details

Defined in Traq.CQPL.Syntax

type StmtOf (Stmt size) = Stmt size

Procedures

data ParamTag #

Instances

Instances details
Enum ParamTag # 
Instance details

Defined in Traq.CQPL.Syntax

Read ParamTag # 
Instance details

Defined in Traq.CQPL.Syntax

Show ParamTag # 
Instance details

Defined in Traq.CQPL.Syntax

Eq ParamTag # 
Instance details

Defined in Traq.CQPL.Syntax

ToCodeString ParamTag # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

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

data UProcBody size #

Unitary Procedure body: either a statement (with parameter name bindings) or a tick.

Instances

Instances details
Read size => Read (UProcBody size) # 
Instance details

Defined in Traq.CQPL.Syntax

Show size => Show (UProcBody size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

showsPrec :: Int -> UProcBody size -> ShowS #

show :: UProcBody size -> String #

showList :: [UProcBody size] -> ShowS #

Eq size => Eq (UProcBody size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

(==) :: UProcBody size -> UProcBody size -> Bool #

(/=) :: UProcBody size -> UProcBody size -> Bool #

type SizeType (UProcBody size) # 
Instance details

Defined in Traq.CQPL.Syntax

type SizeType (UProcBody size) = size

data CProcBody size #

Classical Procedure body: either a tick, or statement with bindings for parameters names, and optionally using local variables.

Constructors

CProcBody 
CProcDecl 

Instances

Instances details
Read size => Read (CProcBody size) # 
Instance details

Defined in Traq.CQPL.Syntax

Show size => Show (CProcBody size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

showsPrec :: Int -> CProcBody size -> ShowS #

show :: CProcBody size -> String #

showList :: [CProcBody size] -> ShowS #

Eq size => Eq (CProcBody size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

(==) :: CProcBody size -> CProcBody size -> Bool #

(/=) :: CProcBody size -> CProcBody size -> Bool #

HasStmt (CProcBody size) # 
Instance details

Defined in Traq.CQPL.Syntax

Associated Types

type StmtOf (CProcBody size) #

Methods

_stmt :: Traversal' (CProcBody size) (StmtOf (CProcBody size)) #

type SizeType (CProcBody size) # 
Instance details

Defined in Traq.CQPL.Syntax

type SizeType (CProcBody size) = size
type StmtOf (CProcBody size) # 
Instance details

Defined in Traq.CQPL.Syntax

type StmtOf (CProcBody size) = Stmt size

data ProcBody size #

Constructors

ProcBodyU (UProcBody size) 
ProcBodyC (CProcBody size) 

Instances

Instances details
Read size => Read (ProcBody size) # 
Instance details

Defined in Traq.CQPL.Syntax

Show size => Show (ProcBody size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

showsPrec :: Int -> ProcBody size -> ShowS #

show :: ProcBody size -> String #

showList :: [ProcBody size] -> ShowS #

Eq size => Eq (ProcBody size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

(==) :: ProcBody size -> ProcBody size -> Bool #

(/=) :: ProcBody size -> ProcBody size -> Bool #

type SizeType (ProcBody size) # 
Instance details

Defined in Traq.CQPL.Syntax

type SizeType (ProcBody size) = size

data ProcDef size #

Instances

Instances details
Read size => Read (ProcDef size) # 
Instance details

Defined in Traq.CQPL.Syntax

Show size => Show (ProcDef size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

showsPrec :: Int -> ProcDef size -> ShowS #

show :: ProcDef size -> String #

showList :: [ProcDef size] -> ShowS #

Eq size => Eq (ProcDef size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

(==) :: ProcDef size -> ProcDef size -> Bool #

(/=) :: ProcDef size -> ProcDef size -> Bool #

HasProcCtx (ProcCtx size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

_procCtx :: (size0 ~ SizeType (ProcCtx size), prec ~ PrecType (ProcCtx size)) => Lens' (ProcCtx size) (ProcCtx size0) #

HasStmt (ProcDef size) # 
Instance details

Defined in Traq.CQPL.Syntax

Associated Types

type StmtOf (ProcDef size) #

Methods

_stmt :: Traversal' (ProcDef size) (StmtOf (ProcDef size)) #

Show size => ToCodeString (ProcDef size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

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

type SizeType (ProcDef size) # 
Instance details

Defined in Traq.CQPL.Syntax

type SizeType (ProcDef size) = size
type StmtOf (ProcDef size) # 
Instance details

Defined in Traq.CQPL.Syntax

type StmtOf (ProcDef size) = Stmt size

Program

type ProcCtx size = Context (ProcDef size) #

CQ procedures

newtype Program size #

CQ Program

Constructors

Program [ProcDef size] 

Instances

Instances details
Read size => Read (Program size) # 
Instance details

Defined in Traq.CQPL.Syntax

Show size => Show (Program size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

showsPrec :: Int -> Program size -> ShowS #

show :: Program size -> String #

showList :: [Program size] -> ShowS #

Eq size => Eq (Program size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

(==) :: Program size -> Program size -> Bool #

(/=) :: Program size -> Program size -> Bool #

HasStmt (Program size) # 
Instance details

Defined in Traq.CQPL.Syntax

Associated Types

type StmtOf (Program size) #

Methods

_stmt :: Traversal' (Program size) (StmtOf (Program size)) #

Show size => ToCodeString (Program size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

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

type SizeType (Program size) # 
Instance details

Defined in Traq.CQPL.Syntax

type SizeType (Program size) = size
type StmtOf (Program size) # 
Instance details

Defined in Traq.CQPL.Syntax

type StmtOf (Program size) = Stmt size

Syntax Sugar

ifThenS :: Ident -> Stmt size -> Stmt size #

mkForInRangeS :: Ident -> MetaParam size -> UStmt size -> UStmt size #

desugarS :: CanDesugar p => p -> Maybe p #

Lenses

class HasProcCtx s where #

Methods

_procCtx :: (size ~ SizeType s, prec ~ PrecType s) => Lens' s (ProcCtx size) #

Instances

Instances details
HasProcCtx (ProcCtx size) # 
Instance details

Defined in Traq.CQPL.Syntax

Methods

_procCtx :: (size0 ~ SizeType (ProcCtx size), prec ~ PrecType (ProcCtx size)) => Lens' (ProcCtx size) (ProcCtx size0) #

HasProcCtx (CheckingCtx size) # 
Instance details

Defined in Traq.CQPL.TypeCheck

Methods

_procCtx :: (size0 ~ SizeType (CheckingCtx size), prec ~ PrecType (CheckingCtx size)) => Lens' (CheckingCtx size) (ProcCtx size0) #

isUProc :: ClassifyProc p => p -> Bool #

isCProc :: ClassifyProc p => p -> Bool #