Compiler.Hoopl

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

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

data AGraph n e x

graphOfAGraph

aGraphOfGraph

(<*>)

(|*><*|)

catGraphs

addEntrySeq

addExitSeq

addBlocks

unionBlocks

emptyGraph

emptyClosedGraph

withFresh

mkFirst

mkMiddle

mkMiddles

mkLast

mkBranch

mkLabel

mkWhileDo

class IfThenElseable x

mkEntry

mkExit

class HooplNode n

Utilities for clients

firstXfer

distributeXfer

distributeFact

distributeFactBwd

successorFacts

joinFacts

joinOutFacts

joinMaps

analyzeAndRewriteFwdBody

analyzeAndRewriteBwdBody

analyzeAndRewriteFwdOx

analyzeAndRewriteBwdOx

class IsSet set

setInsertList

setDeleteList

setUnions

class IsMap map

mapInsertList

mapDeleteList

mapUnions

class CheckpointMonad m

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

data Label

freshLabel

data LabelSet

data LabelMap v

type FactBase f

noFacts

lookupFact

uniqueToLbl

lblToUnique

data Pointed t b a

addPoints

addPoints'

addTop

addTop'

liftJoinTop

extendJoinDomain

type WithTop a

type WithBot a

type WithTopAndBot a

thenFwdRw

deepFwdRw3

deepFwdRw

iterFwdRw

thenBwdRw

deepBwdRw3

deepBwdRw

iterBwdRw

pairFwd

pairBwd

pairLattice

type Fuel

infiniteFuel

fuelRemaining

withFuel

class FuelMonad m

class FuelMonadT fm

data CheckingFuelMonad m a

data InfiniteFuelMonad m a

type SimpleFuelMonad

type Unique

intToUnique

data UniqueSet

data UniqueMap v

class UniqueMonad m

data SimpleUniqueMonad a

runSimpleUniqueMonad

data UniqueMonadT m a

runUniqueMonadT

uniqueToInt

type TraceFn

debugFwdJoins

debugBwdJoins

debugFwdTransfers

debugBwdTransfers

showGraph

showFactBase

type Showing n