traq
Safe HaskellSafe-Inferred
LanguageHaskell2010

Traq.CQPL.TypeCheck

Synopsis

Monad

data CheckingCtx size #

Env for type checking

Instances

Instances details
Generic (CheckingCtx size) # 
Instance details

Defined in Traq.CQPL.TypeCheck

Associated Types

type Rep (CheckingCtx size) :: Type -> Type #

Methods

from :: CheckingCtx size -> Rep (CheckingCtx size) x #

to :: Rep (CheckingCtx size) x -> CheckingCtx size #

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

HasDefault (CheckingCtx size) # 
Instance details

Defined in Traq.CQPL.TypeCheck

Methods

default_ :: CheckingCtx size #

HasTypingCtx (CheckingCtx size) # 
Instance details

Defined in Traq.CQPL.TypeCheck

Methods

_typingCtx :: size0 ~ SizeType (CheckingCtx size) => Lens' (CheckingCtx size) (TypingCtx size0) #

type Rep (CheckingCtx size) # 
Instance details

Defined in Traq.CQPL.TypeCheck

type Rep (CheckingCtx size) = D1 ('MetaData "CheckingCtx" "Traq.CQPL.TypeCheck" "traq-0.2.0.0-inplace" 'False) (C1 ('MetaCons "CheckingCtx" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ProcCtx size)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TypingCtx size))))
type SizeType (CheckingCtx size) # 
Instance details

Defined in Traq.CQPL.TypeCheck

type SizeType (CheckingCtx size) = size

type TypeChecker size = ReaderT (CheckingCtx size) (Either MyError) #

Monad for type checking

Checking

typeCheckUStmt :: forall size. TypingReqs size => UStmt size -> TypeChecker size () #

typeCheckStmt :: forall size. TypingReqs size => Stmt size -> TypeChecker size () #

Check a statement

typeCheckProc :: forall size. TypingReqs size => ProcDef size -> TypeChecker size () #

typeCheckProgram :: forall size. TypingReqs size => Program size -> Either MyError () #

Check an entire program given the input bindings.