Agda-2.2.10: A dependently typed functional programming language and proof assistant

Agda.Compiler.Epic.Primitive

Description

Change constructors and cases on builtins and natish datatypes to use primitive data

Synopsis

Documentation

data PrimTransform Source

Constructors

PrimTF 

Fields

mapCon :: Map QName Var
 
translateCase :: Expr -> [Branch] -> Expr
 

primitivise :: MonadTCM m => [Fun] -> Compile m [Fun]Source

Change constructors and cases on builtins and natish datatypes to use primitive data

primLists :: MonadTCM m => Compile m [Fun]Source

Create primitive functions if list constructors are marked as builtins

getBuiltins :: MonadTCM m => Compile m [PrimTransform]Source

Build transforms using the names of builtins

natPrimTF :: IrrFilter -> [QName] -> PrimTransformSource

Translation to primitive integer functions

primNatCaseZSSource

Arguments

:: Expr

Expression that is cased on

-> Expr

Expression for the zero branch

-> Var

Variable that is bound in suc branch

-> Expr

Expression used for suc branch

-> Expr

Result?

Corresponds to a case for natural numbers

primNatCaseZDSource

Arguments

:: Expr

Expression that is cased on

-> Expr

Zero branch

-> Expr

Default branch

-> Expr

Result?

Corresponds to a case with a zero and default branch

boolPrimTF :: [QName] -> PrimTransformSource

Translation to primitive bool functions

primFun :: MonadTCM m => [PrimTransform] -> Fun -> Compile m FunSource

Change all the primitives in the function using the PrimTransform

primExpr :: MonadTCM m => [PrimTransform] -> Expr -> Compile m ExprSource

Change all the primitives in an expression using PrimTransform