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

Safe HaskellNone
LanguageHaskell2010

Agda.Compiler.Epic.AuxAST

Contents

Description

Intermediate abstract syntax tree used in the compiler. Pretty close to Epic syntax.

Synopsis

Documentation

type Inline = Bool #

data Fun #

Instances

Eq Fun # 

Methods

(==) :: Fun -> Fun -> Bool #

(/=) :: Fun -> Fun -> Bool #

Ord Fun # 

Methods

compare :: Fun -> Fun -> Ordering #

(<) :: Fun -> Fun -> Bool #

(<=) :: Fun -> Fun -> Bool #

(>) :: Fun -> Fun -> Bool #

(>=) :: Fun -> Fun -> Bool #

max :: Fun -> Fun -> Fun #

min :: Fun -> Fun -> Fun #

Show Fun # 

Methods

showsPrec :: Int -> Fun -> ShowS #

show :: Fun -> String #

showList :: [Fun] -> ShowS #

data Lit #

Instances

Eq Lit # 

Methods

(==) :: Lit -> Lit -> Bool #

(/=) :: Lit -> Lit -> Bool #

Ord Lit # 

Methods

compare :: Lit -> Lit -> Ordering #

(<) :: Lit -> Lit -> Bool #

(<=) :: Lit -> Lit -> Bool #

(>) :: Lit -> Lit -> Bool #

(>=) :: Lit -> Lit -> Bool #

max :: Lit -> Lit -> Lit #

min :: Lit -> Lit -> Lit #

Show Lit # 

Methods

showsPrec :: Int -> Lit -> ShowS #

show :: Lit -> String #

showList :: [Lit] -> ShowS #

data Expr #

Instances

Eq Expr # 

Methods

(==) :: Expr -> Expr -> Bool #

(/=) :: Expr -> Expr -> Bool #

Ord Expr # 

Methods

compare :: Expr -> Expr -> Ordering #

(<) :: Expr -> Expr -> Bool #

(<=) :: Expr -> Expr -> Bool #

(>) :: Expr -> Expr -> Bool #

(>=) :: Expr -> Expr -> Bool #

max :: Expr -> Expr -> Expr #

min :: Expr -> Expr -> Expr #

Show Expr # 

Methods

showsPrec :: Int -> Expr -> ShowS #

show :: Expr -> String #

showList :: [Expr] -> ShowS #

data Branch #

Constructors

Branch 

Fields

BrInt 

Fields

Default 

Fields

Instances

Some smart constructors

lett :: Var -> Expr -> Expr -> Expr #

Smart constructor for let expressions to avoid unneceessary lets

lazy :: Expr -> Expr #

Some things are pointless to make lazy

casee :: Expr -> [Branch] -> Expr #

If casing on the same expression in a sub-expression, we know what branch to pick

apps :: Var -> [Expr] -> Expr #

Smart constructor for applications to avoid empty applications

Substitution

subst #

Arguments

:: Var

Substitute this ...

-> Var

with this ...

-> Expr

in this.

-> Expr 

Substitution

substs :: [(Var, Var)] -> Expr -> Expr #

fv :: Expr -> [Var] #

Get the free variables in an expression