Compiler.Hoopl.Internals

# Shapes

data O

data C

data MaybeO ex t

data MaybeC ex t

type family IndexedCO ex a b :: *

data Shape ex

# Blocks

data Block n e x

## Predicates on Blocks

isEmptyBlock

## Constructing blocks

emptyBlock

blockCons

blockSnoc

blockJoinHead

blockJoinTail

blockJoin

blockJoinAny

blockAppend

## Deconstructing blocks

firstNode

lastNode

endNodes

blockSplitHead

blockSplitTail

blockSplit

blockSplitAny

## Modifying blocks

replaceFirstNode

replaceLastNode

## Converting to and from lists

blockToList

blockFromList

## Maps and folds

mapBlock

mapBlock'

mapBlock3'

foldBlockNodesF

foldBlockNodesF3

foldBlockNodesB

foldBlockNodesB3

## Biasing

frontBiasBlock

backBiasBlock

# Body

type Body n

type Body' block n

emptyBody

bodyList

addBlock

bodyUnion

# Graph

type Graph

data Graph' block n e x

class NonLocal thing

## Constructing graphs

bodyGraph

blockGraph

gUnitOO

gUnitOC

gUnitCO

gUnitCC

catGraphNodeOC

catGraphNodeOO

catNodeCOGraph

catNodeOOGraph

## Splicing graphs

splice

gSplice

## Maps

mapGraph

mapGraphBlocks

## Folds

foldGraphNodes

## Extracting Labels

labelsDefined

labelsUsed

externalEntryLabels

## Depth-first traversals

postorder_dfs

postorder_dfs_from

postorder_dfs_from_except

preorder_dfs

preorder_dfs_from_except

class LabelsPtr l

data Label

freshLabel

data LabelSet

data LabelMap v

type FactBase f

noFacts

lookupFact

uniqueToLbl

lblToUnique

data DataflowLattice a

type JoinFun a

data OldFact a

data NewFact a

type family Fact x f :: *

mkFactBase

data ChangeFlag

changeIf

data FwdPass m n f

data FwdTransfer n f

mkFTransfer

mkFTransfer3

data FwdRewrite m n f

mkFRewrite

mkFRewrite3

noFwdRewrite

wrapFR

wrapFR2

data BwdPass m n f

data BwdTransfer n f

mkBTransfer

mkBTransfer3

wrapBR

wrapBR2

data BwdRewrite m n f

mkBRewrite

mkBRewrite3

noBwdRewrite

analyzeAndRewriteFwd

analyzeAndRewriteBwd

# Respecting Fuel