CoreSyn

# Main data types

data Expr b

type Alt b

data Bind b

data AltCon

type Arg b

data Note

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

mkVarApps

mkIntLit

mkIntLitInt

mkWordLit

mkWordLitWord

mkCharLit

mkStringLit

mkFloatLit

mkFloatLitFloat

mkDoubleLit

mkDoubleLitDouble

mkConApp

mkTyBind

varToCoreExpr

varsToCoreExprs

isTyCoVar

isId

cmpAltCon

cmpAlt

ltAlt

## Simple `Expr` access functions and predicates

bindersOf

bindersOfBinds

rhssOfBind

rhssOfAlts

collectBinders

collectTyBinders

collectValBinders

collectTyAndValBinders

collectArgs

coreExprCc

flattenBinds

isValArg

isTypeArg

valArgCount

valBndrCount

isRuntimeArg

isRuntimeVar

notSccNote

# Unfolding data types

data Unfolding

data UnfoldingGuidance

data UnfoldingSource

data DFunArg e

dfunArgExprs

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