CoreSyn

# Main data types

data Expr b

type Alt b

data Bind b

data AltCon

type Arg b

data Tickish id

type CoreProgram

type CoreExpr

type CoreAlt

type CoreBind

type CoreArg

type CoreBndr

type TaggedExpr t

type TaggedAlt t

type TaggedBind t

type TaggedArg t

data TaggedBndr t

## `Expr` construction

mkLets

mkLams

mkApps

mkTyApps

mkCoApps

mkVarApps

mkIntLit

mkIntLitInt

mkWordLit

mkWordLitWord

mkWord64LitWord64

mkInt64LitInt64

mkCharLit

mkStringLit

mkFloatLit

mkFloatLitFloat

mkDoubleLit

mkDoubleLitDouble

mkConApp

mkTyBind

mkCoBind

varToCoreExpr

varsToCoreExprs

isId

cmpAltCon

cmpAlt

ltAlt

## Simple `Expr` access functions and predicates

bindersOf

bindersOfBinds

rhssOfBind

rhssOfAlts

collectBinders

collectTyBinders

collectValBinders

collectTyAndValBinders

collectArgs

flattenBinds

isValArg

isTypeArg

isTyCoArg

valArgCount

valBndrCount

isRuntimeArg

isRuntimeVar

tickishCounts

tickishScoped

tickishIsCode

mkNoTick

mkNoScope

tickishCanSplit

# Unfolding data types

data Unfolding

data UnfoldingGuidance

data UnfoldingSource

## Constructing `Unfolding`s

noUnfolding

evaldUnfolding

mkOtherCon

unSaturatedOk

needSaturated

boringCxtOk

boringCxtNotOk

## Predicates and deconstruction on `Unfolding`

unfoldingTemplate

setUnfoldingTemplate

expandUnfolding_maybe

maybeUnfoldingTemplate

otherCons

unfoldingArity

isValueUnfolding

isEvaldUnfolding

isCheapUnfolding

isExpandableUnfolding

isConLikeUnfolding

isCompulsoryUnfolding

isStableUnfolding

isStableCoreUnfolding_maybe

isClosedUnfolding

hasSomeUnfolding

canUnfold

neverUnfoldGuidance

isStableSource

# Strictness

seqExpr

seqExprs

seqUnfolding

# Annotated expression data types

type AnnExpr bndr annot

data AnnExpr' bndr annot

data AnnBind bndr annot

type AnnAlt bndr annot

## Operations on annotated expressions

collectAnnArgs

## Operations on annotations

deAnnotate

deAnnotate'

deAnnAlt

collectAnnBndrs

# Core rule data types

data CoreRule

type RuleName

type IdUnfoldingFun

## Operations on `CoreRule`s

seqRules

ruleArity

ruleName

ruleIdName

ruleActivation

setRuleIdName

isBuiltinRule

isLocalRule

# Core vectorisation declarations data type

data CoreVect