<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!--Rendered using the Haskell Html Library v0.2--> <HTML ><HEAD ><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8" ><TITLE >ZipDataflow</TITLE ><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css" ><SCRIPT SRC="haddock-util.js" TYPE="text/javascript" ></SCRIPT ><SCRIPT TYPE="text/javascript" >window.onload = function () {setSynopsis("mini_ZipDataflow.html")};</SCRIPT ></HEAD ><BODY ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="topbar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" " ></TD ><TD CLASS="title" >ghc-6.12.3: The GHC API</TD ><TD CLASS="topbut" ><A HREF="index.html" >Contents</A ></TD ><TD CLASS="topbut" ><A HREF="doc-index.html" >Index</A ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="modulebar" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD ><FONT SIZE="6" >ZipDataflow</FONT ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Synopsis</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > (<A HREF="Outputable.html#t%3AOutputable" >Outputable</A > m, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > l, <A HREF="ZipCfg.html#t%3ALastNode" >LastNode</A > l, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > (<A HREF="ZipCfg.html#t%3ALGraph" >LGraph</A > m l)) => <A HREF="#t%3ADebugNodes" >DebugNodes</A > m l </TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ARewritingDepth" >RewritingDepth</A > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="decl" >= <A HREF="#v%3ARewriteShallow" >RewriteShallow</A ></TD ></TR ><TR ><TD CLASS="decl" >| <A HREF="#v%3ARewriteDeep" >RewriteDeep</A ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >newtype</SPAN > <A HREF="#t%3ALastOutFacts" >LastOutFacts</A > a = <A HREF="#v%3ALastOutFacts" >LastOutFacts</A > [(<A HREF="BlockId.html#t%3ABlockId" >BlockId</A >, a)]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzdfSolveFrom" >zdfSolveFrom</A > :: (DataflowSolverDirection transfers fixedpt, <A HREF="ZipDataflow.html#t%3ADebugNodes" >DebugNodes</A > m l, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > a) => <A HREF="BlockId.html#t%3ABlockEnv" >BlockEnv</A > a -> PassName -> <A HREF="DFMonad.html#t%3ADataflowLattice" >DataflowLattice</A > a -> transfers m l a -> a -> <A HREF="ZipCfg.html#t%3AGraph" >Graph</A > m l -> <A HREF="OptimizationFuel.html#t%3AFuelMonad" >FuelMonad</A > (fixedpt m l a <A HREF="../ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzdfRewriteFrom" >zdfRewriteFrom</A > :: (DataflowDirection transfers fixedpt rewrites, <A HREF="ZipDataflow.html#t%3ADebugNodes" >DebugNodes</A > m l, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > a) => <A HREF="ZipDataflow.html#t%3ARewritingDepth" >RewritingDepth</A > -> <A HREF="BlockId.html#t%3ABlockEnv" >BlockEnv</A > a -> PassName -> <A HREF="DFMonad.html#t%3ADataflowLattice" >DataflowLattice</A > a -> transfers m l a -> rewrites m l a -> a -> <A HREF="ZipCfg.html#t%3AGraph" >Graph</A > m l -> <A HREF="OptimizationFuel.html#t%3AFuelMonad" >FuelMonad</A > (fixedpt m l a (<A HREF="ZipCfg.html#t%3AGraph" >Graph</A > m l))</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzdfSolveFromL" >zdfSolveFromL</A > :: (DataflowSolverDirection transfers fixedpt, <A HREF="ZipDataflow.html#t%3ADebugNodes" >DebugNodes</A > m l, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > a) => <A HREF="BlockId.html#t%3ABlockEnv" >BlockEnv</A > a -> PassName -> <A HREF="DFMonad.html#t%3ADataflowLattice" >DataflowLattice</A > a -> transfers m l a -> a -> <A HREF="ZipCfg.html#t%3ALGraph" >LGraph</A > m l -> <A HREF="OptimizationFuel.html#t%3AFuelMonad" >FuelMonad</A > (fixedpt m l a <A HREF="../ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A >)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AForwardTransfers" >ForwardTransfers</A > middle last a = <A HREF="#v%3AForwardTransfers" >ForwardTransfers</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3Aft_first_out" >ft_first_out</A > :: <A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> a -> a</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Aft_middle_out" >ft_middle_out</A > :: middle -> a -> a</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Aft_last_outs" >ft_last_outs</A > :: last -> a -> <A HREF="ZipDataflow.html#t%3ALastOutFacts" >LastOutFacts</A > a</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Aft_exit_out" >ft_exit_out</A > :: a -> a</TD ></TR ></TABLE >}</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ABackwardTransfers" >BackwardTransfers</A > middle last a = <A HREF="#v%3ABackwardTransfers" >BackwardTransfers</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3Abt_first_in" >bt_first_in</A > :: <A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> a -> a</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Abt_middle_in" >bt_middle_in</A > :: middle -> a -> a</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Abt_last_in" >bt_last_in</A > :: last -> (<A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> a) -> a</TD ></TR ></TABLE >}</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AForwardRewrites" >ForwardRewrites</A > middle last a = <A HREF="#v%3AForwardRewrites" >ForwardRewrites</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3Afr_first" >fr_first</A > :: <A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> a -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > middle last)</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Afr_middle" >fr_middle</A > :: middle -> a -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > middle last)</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Afr_last" >fr_last</A > :: last -> a -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > middle last)</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Afr_exit" >fr_exit</A > :: a -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > middle last)</TD ></TR ></TABLE >}</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3ABackwardRewrites" >BackwardRewrites</A > middle last a = <A HREF="#v%3ABackwardRewrites" >BackwardRewrites</A > {<TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="recfield" ><A HREF="#v%3Abr_first" >br_first</A > :: <A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> a -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > middle last)</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Abr_middle" >br_middle</A > :: middle -> a -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > middle last)</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Abr_last" >br_last</A > :: last -> (<A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> a) -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > middle last)</TD ></TR ><TR ><TD CLASS="recfield" ><A HREF="#v%3Abr_exit" >br_exit</A > :: <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > middle last)</TD ></TR ></TABLE >}</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A HREF="#t%3AForwardFixedPoint" >ForwardFixedPoint</A > m l fact a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ABackwardFixedPoint" >BackwardFixedPoint</A > = CommonFixedPoint</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzdfFpFacts" >zdfFpFacts</A > :: FixedPoint fp => fp m l fact a -> <A HREF="BlockId.html#t%3ABlockEnv" >BlockEnv</A > fact</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzdfFpOutputFact" >zdfFpOutputFact</A > :: FixedPoint fp => fp m l fact a -> fact</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzdfGraphChanged" >zdfGraphChanged</A > :: FixedPoint fp => fp m l fact a -> <A HREF="CmmTx.html#t%3AChangeFlag" >ChangeFlag</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzdfDecoratedGraph" >zdfDecoratedGraph</A > :: FixedPoint fp => fp m l fact a -> <A HREF="ZipCfg.html#t%3AGraph" >Graph</A > (fact, m) (fact, l)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzdfFpContents" >zdfFpContents</A > :: FixedPoint fp => fp m l fact a -> a</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzdfFpLastOuts" >zdfFpLastOuts</A > :: <A HREF="ZipDataflow.html#t%3AForwardFixedPoint" >ForwardFixedPoint</A > m l fact a -> <A HREF="ZipDataflow.html#t%3ALastOutFacts" >LastOutFacts</A > fact</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzdfBRewriteFromL" >zdfBRewriteFromL</A > :: (<A HREF="ZipDataflow.html#t%3ADebugNodes" >DebugNodes</A > m l, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > a) => <A HREF="ZipDataflow.html#t%3ARewritingDepth" >RewritingDepth</A > -> <A HREF="BlockId.html#t%3ABlockEnv" >BlockEnv</A > a -> PassName -> <A HREF="DFMonad.html#t%3ADataflowLattice" >DataflowLattice</A > a -> <A HREF="ZipDataflow.html#t%3ABackwardTransfers" >BackwardTransfers</A > m l a -> <A HREF="ZipDataflow.html#t%3ABackwardRewrites" >BackwardRewrites</A > m l a -> a -> <A HREF="ZipCfg.html#t%3ALGraph" >LGraph</A > m l -> <A HREF="OptimizationFuel.html#t%3AFuelMonad" >FuelMonad</A > (<A HREF="ZipDataflow.html#t%3ABackwardFixedPoint" >BackwardFixedPoint</A > m l a (<A HREF="ZipCfg.html#t%3ALGraph" >LGraph</A > m l))</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AzdfFRewriteFromL" >zdfFRewriteFromL</A > :: (<A HREF="ZipDataflow.html#t%3ADebugNodes" >DebugNodes</A > m l, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > a) => <A HREF="ZipDataflow.html#t%3ARewritingDepth" >RewritingDepth</A > -> <A HREF="BlockId.html#t%3ABlockEnv" >BlockEnv</A > a -> PassName -> <A HREF="DFMonad.html#t%3ADataflowLattice" >DataflowLattice</A > a -> <A HREF="ZipDataflow.html#t%3AForwardTransfers" >ForwardTransfers</A > m l a -> <A HREF="ZipDataflow.html#t%3AForwardRewrites" >ForwardRewrites</A > m l a -> a -> <A HREF="ZipCfg.html#t%3ALGraph" >LGraph</A > m l -> <A HREF="OptimizationFuel.html#t%3AFuelMonad" >FuelMonad</A > (<A HREF="ZipDataflow.html#t%3AForwardFixedPoint" >ForwardFixedPoint</A > m l a (<A HREF="ZipCfg.html#t%3ALGraph" >LGraph</A > m l))</TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="section1" >Documentation</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >class</SPAN > (<A HREF="Outputable.html#t%3AOutputable" >Outputable</A > m, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > l, <A HREF="ZipCfg.html#t%3ALastNode" >LastNode</A > l, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > (<A HREF="ZipCfg.html#t%3ALGraph" >LGraph</A > m l)) => <A NAME="t:DebugNodes" ><A NAME="t%3ADebugNodes" ></A ></A ><B >DebugNodes</B > m l </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:DebugNodes')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:DebugNodes" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" ><A HREF="ZipDataflow.html#t%3ADebugNodes" >DebugNodes</A > <A HREF="ZipCfgCmmRep.html#t%3AMiddle" >Middle</A > <A HREF="ZipCfgCmmRep.html#t%3ALast" >Last</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:RewritingDepth" ><A NAME="t%3ARewritingDepth" ></A ></A ><B >RewritingDepth</B > </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:RewriteShallow" ><A NAME="v%3ARewriteShallow" ></A ></A ><B >RewriteShallow</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:RewriteDeep" ><A NAME="v%3ARewriteDeep" ></A ></A ><B >RewriteDeep</B ></TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >newtype</SPAN > <A NAME="t:LastOutFacts" ><A NAME="t%3ALastOutFacts" ></A ></A ><B >LastOutFacts</B > a </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:LastOutFacts" ><A NAME="v%3ALastOutFacts" ></A ></A ><B >LastOutFacts</B > [(<A HREF="BlockId.html#t%3ABlockId" >BlockId</A >, a)]</TD ><TD CLASS="rdoc" >These are facts flowing out of a last node to the node's successors. They are either to be set (if they pertain to the graph currently under analysis) or propagated out of a sub-analysis </TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zdfSolveFrom" ><A NAME="v%3AzdfSolveFrom" ></A ></A ><B >zdfSolveFrom</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: (DataflowSolverDirection transfers fixedpt, <A HREF="ZipDataflow.html#t%3ADebugNodes" >DebugNodes</A > m l, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > a)</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >=> <A HREF="BlockId.html#t%3ABlockEnv" >BlockEnv</A > a</TD ><TD CLASS="rdoc" >Initial facts (unbound == bottom) </TD ></TR ><TR ><TD CLASS="arg" >-> PassName</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="DFMonad.html#t%3ADataflowLattice" >DataflowLattice</A > a</TD ><TD CLASS="rdoc" >Lattice </TD ></TR ><TR ><TD CLASS="arg" >-> transfers m l a</TD ><TD CLASS="rdoc" >Dataflow transfer functions </TD ></TR ><TR ><TD CLASS="arg" >-> a</TD ><TD CLASS="rdoc" >Fact flowing in (at entry or exit) </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="ZipCfg.html#t%3AGraph" >Graph</A > m l</TD ><TD CLASS="rdoc" >Graph to be analyzed </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="OptimizationFuel.html#t%3AFuelMonad" >FuelMonad</A > (fixedpt m l a <A HREF="../ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A >)</TD ><TD CLASS="rdoc" >Answers </TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zdfRewriteFrom" ><A NAME="v%3AzdfRewriteFrom" ></A ></A ><B >zdfRewriteFrom</B > :: (DataflowDirection transfers fixedpt rewrites, <A HREF="ZipDataflow.html#t%3ADebugNodes" >DebugNodes</A > m l, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > a) => <A HREF="ZipDataflow.html#t%3ARewritingDepth" >RewritingDepth</A > -> <A HREF="BlockId.html#t%3ABlockEnv" >BlockEnv</A > a -> PassName -> <A HREF="DFMonad.html#t%3ADataflowLattice" >DataflowLattice</A > a -> transfers m l a -> rewrites m l a -> a -> <A HREF="ZipCfg.html#t%3AGraph" >Graph</A > m l -> <A HREF="OptimizationFuel.html#t%3AFuelMonad" >FuelMonad</A > (fixedpt m l a (<A HREF="ZipCfg.html#t%3AGraph" >Graph</A > m l))</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zdfSolveFromL" ><A NAME="v%3AzdfSolveFromL" ></A ></A ><B >zdfSolveFromL</B > :: (DataflowSolverDirection transfers fixedpt, <A HREF="ZipDataflow.html#t%3ADebugNodes" >DebugNodes</A > m l, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > a) => <A HREF="BlockId.html#t%3ABlockEnv" >BlockEnv</A > a -> PassName -> <A HREF="DFMonad.html#t%3ADataflowLattice" >DataflowLattice</A > a -> transfers m l a -> a -> <A HREF="ZipCfg.html#t%3ALGraph" >LGraph</A > m l -> <A HREF="OptimizationFuel.html#t%3AFuelMonad" >FuelMonad</A > (fixedpt m l a <A HREF="../ghc-prim-0.2.0.0/GHC-Unit.html#t%3A%28%29" >()</A >)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:ForwardTransfers" ><A NAME="t%3AForwardTransfers" ></A ></A ><B >ForwardTransfers</B > middle last a </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >For a forward transfer, you're given the fact on a node's inedge and you compute the fact on the outedge. Because a last node may have multiple outedges, each pointing to a labelled block, so instead of a fact it produces a list of (BlockId, fact) pairs. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:ForwardTransfers" ><A NAME="v%3AForwardTransfers" ></A ></A ><B >ForwardTransfers</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:ft_first_out" ><A NAME="v%3Aft_first_out" ></A ></A ><B >ft_first_out</B > :: <A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> a -> a</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ft_middle_out" ><A NAME="v%3Aft_middle_out" ></A ></A ><B >ft_middle_out</B > :: middle -> a -> a</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ft_last_outs" ><A NAME="v%3Aft_last_outs" ></A ></A ><B >ft_last_outs</B > :: last -> a -> <A HREF="ZipDataflow.html#t%3ALastOutFacts" >LastOutFacts</A > a</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:ft_exit_out" ><A NAME="v%3Aft_exit_out" ></A ></A ><B >ft_exit_out</B > :: a -> a</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ForwardTransfers')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:ForwardTransfers" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" >DataflowSolverDirection <A HREF="ZipDataflow.html#t%3AForwardTransfers" >ForwardTransfers</A > <A HREF="ZipDataflow.html#t%3AForwardFixedPoint" >ForwardFixedPoint</A ></TD ></TR ><TR ><TD CLASS="decl" >DataflowDirection <A HREF="ZipDataflow.html#t%3AForwardTransfers" >ForwardTransfers</A > <A HREF="ZipDataflow.html#t%3AForwardFixedPoint" >ForwardFixedPoint</A > <A HREF="ZipDataflow.html#t%3AForwardRewrites" >ForwardRewrites</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:BackwardTransfers" ><A NAME="t%3ABackwardTransfers" ></A ></A ><B >BackwardTransfers</B > middle last a </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >For a backward transfer, you're given the fact on a node's outedge and you compute the fact on the inedge. Facts have type a. A last node may have multiple outedges, each pointing to a labelled block, so instead of a fact it is given a mapping from BlockId to fact. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:BackwardTransfers" ><A NAME="v%3ABackwardTransfers" ></A ></A ><B >BackwardTransfers</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:bt_first_in" ><A NAME="v%3Abt_first_in" ></A ></A ><B >bt_first_in</B > :: <A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> a -> a</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:bt_middle_in" ><A NAME="v%3Abt_middle_in" ></A ></A ><B >bt_middle_in</B > :: middle -> a -> a</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:bt_last_in" ><A NAME="v%3Abt_last_in" ></A ></A ><B >bt_last_in</B > :: last -> (<A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> a) -> a</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:BackwardTransfers')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:BackwardTransfers" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" >DataflowSolverDirection <A HREF="ZipDataflow.html#t%3ABackwardTransfers" >BackwardTransfers</A > <A HREF="ZipDataflow.html#t%3ABackwardFixedPoint" >BackwardFixedPoint</A ></TD ></TR ><TR ><TD CLASS="decl" >DataflowDirection <A HREF="ZipDataflow.html#t%3ABackwardTransfers" >BackwardTransfers</A > <A HREF="ZipDataflow.html#t%3ABackwardFixedPoint" >BackwardFixedPoint</A > <A HREF="ZipDataflow.html#t%3ABackwardRewrites" >BackwardRewrites</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:ForwardRewrites" ><A NAME="t%3AForwardRewrites" ></A ></A ><B >ForwardRewrites</B > middle last a </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >A forward rewrite takes the same inputs as a forward transfer, but instead of producing a fact, it produces a replacement graph or Nothing. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:ForwardRewrites" ><A NAME="v%3AForwardRewrites" ></A ></A ><B >ForwardRewrites</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:fr_first" ><A NAME="v%3Afr_first" ></A ></A ><B >fr_first</B > :: <A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> a -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > middle last)</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:fr_middle" ><A NAME="v%3Afr_middle" ></A ></A ><B >fr_middle</B > :: middle -> a -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > middle last)</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:fr_last" ><A NAME="v%3Afr_last" ></A ></A ><B >fr_last</B > :: last -> a -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > middle last)</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:fr_exit" ><A NAME="v%3Afr_exit" ></A ></A ><B >fr_exit</B > :: a -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > middle last)</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ForwardRewrites')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:ForwardRewrites" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" >DataflowDirection <A HREF="ZipDataflow.html#t%3AForwardTransfers" >ForwardTransfers</A > <A HREF="ZipDataflow.html#t%3AForwardFixedPoint" >ForwardFixedPoint</A > <A HREF="ZipDataflow.html#t%3AForwardRewrites" >ForwardRewrites</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:BackwardRewrites" ><A NAME="t%3ABackwardRewrites" ></A ></A ><B >BackwardRewrites</B > middle last a </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >A backward rewrite takes the same inputs as a backward transfer, but instead of producing a fact, it produces a replacement graph or Nothing. </TD ></TR ><TR ><TD CLASS="section4" >Constructors</TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="5" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:BackwardRewrites" ><A NAME="v%3ABackwardRewrites" ></A ></A ><B >BackwardRewrites</B ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="body" COLSPAN="2" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="arg" ><A NAME="v:br_first" ><A NAME="v%3Abr_first" ></A ></A ><B >br_first</B > :: <A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> a -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > middle last)</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:br_middle" ><A NAME="v%3Abr_middle" ></A ></A ><B >br_middle</B > :: middle -> a -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > middle last)</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:br_last" ><A NAME="v%3Abr_last" ></A ></A ><B >br_last</B > :: last -> (<A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> a) -> <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > middle last)</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" ><A NAME="v:br_exit" ><A NAME="v%3Abr_exit" ></A ></A ><B >br_exit</B > :: <A HREF="../base-4.2.0.2/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > middle last)</TD ><TD CLASS="rdoc" ></TD ></TR ></TABLE ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:BackwardRewrites')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:BackwardRewrites" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" >DataflowDirection <A HREF="ZipDataflow.html#t%3ABackwardTransfers" >BackwardTransfers</A > <A HREF="ZipDataflow.html#t%3ABackwardFixedPoint" >BackwardFixedPoint</A > <A HREF="ZipDataflow.html#t%3ABackwardRewrites" >BackwardRewrites</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >data</SPAN > <A NAME="t:ForwardFixedPoint" ><A NAME="t%3AForwardFixedPoint" ></A ></A ><B >ForwardFixedPoint</B > m l fact a </TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="ndoc" >A forward problem needs the common fields, plus the facts on the outedges. </TD ></TR ><TR ><TD CLASS="section4" ><IMG SRC="minus.gif" CLASS="coll" ONCLICK="toggle(this,'i:ForwardFixedPoint')" ALT="show/hide" > Instances</TD ></TR ><TR ><TD CLASS="body" ><DIV ID="i:ForwardFixedPoint" STYLE="display:block;" ><TABLE CLASS="vanilla" CELLSPACING="1" CELLPADDING="0" ><TR ><TD CLASS="decl" >FixedPoint <A HREF="ZipDataflow.html#t%3AForwardFixedPoint" >ForwardFixedPoint</A ></TD ></TR ><TR ><TD CLASS="decl" >DataflowSolverDirection <A HREF="ZipDataflow.html#t%3AForwardTransfers" >ForwardTransfers</A > <A HREF="ZipDataflow.html#t%3AForwardFixedPoint" >ForwardFixedPoint</A ></TD ></TR ><TR ><TD CLASS="decl" >DataflowDirection <A HREF="ZipDataflow.html#t%3AForwardTransfers" >ForwardTransfers</A > <A HREF="ZipDataflow.html#t%3AForwardFixedPoint" >ForwardFixedPoint</A > <A HREF="ZipDataflow.html#t%3AForwardRewrites" >ForwardRewrites</A ></TD ></TR ></TABLE ></DIV ></TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:BackwardFixedPoint" ><A NAME="t%3ABackwardFixedPoint" ></A ></A ><B >BackwardFixedPoint</B > = CommonFixedPoint</TD ></TR ><TR ><TD CLASS="doc" >The common fixed point is sufficient for a backward problem. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zdfFpFacts" ><A NAME="v%3AzdfFpFacts" ></A ></A ><B >zdfFpFacts</B > :: FixedPoint fp => fp m l fact a -> <A HREF="BlockId.html#t%3ABlockEnv" >BlockEnv</A > fact</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zdfFpOutputFact" ><A NAME="v%3AzdfFpOutputFact" ></A ></A ><B >zdfFpOutputFact</B > :: FixedPoint fp => fp m l fact a -> fact</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zdfGraphChanged" ><A NAME="v%3AzdfGraphChanged" ></A ></A ><B >zdfGraphChanged</B > :: FixedPoint fp => fp m l fact a -> <A HREF="CmmTx.html#t%3AChangeFlag" >ChangeFlag</A ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zdfDecoratedGraph" ><A NAME="v%3AzdfDecoratedGraph" ></A ></A ><B >zdfDecoratedGraph</B > :: FixedPoint fp => fp m l fact a -> <A HREF="ZipCfg.html#t%3AGraph" >Graph</A > (fact, m) (fact, l)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zdfFpContents" ><A NAME="v%3AzdfFpContents" ></A ></A ><B >zdfFpContents</B > :: FixedPoint fp => fp m l fact a -> a</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zdfFpLastOuts" ><A NAME="v%3AzdfFpLastOuts" ></A ></A ><B >zdfFpLastOuts</B > :: <A HREF="ZipDataflow.html#t%3AForwardFixedPoint" >ForwardFixedPoint</A > m l fact a -> <A HREF="ZipDataflow.html#t%3ALastOutFacts" >LastOutFacts</A > fact</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zdfBRewriteFromL" ><A NAME="v%3AzdfBRewriteFromL" ></A ></A ><B >zdfBRewriteFromL</B > :: (<A HREF="ZipDataflow.html#t%3ADebugNodes" >DebugNodes</A > m l, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > a) => <A HREF="ZipDataflow.html#t%3ARewritingDepth" >RewritingDepth</A > -> <A HREF="BlockId.html#t%3ABlockEnv" >BlockEnv</A > a -> PassName -> <A HREF="DFMonad.html#t%3ADataflowLattice" >DataflowLattice</A > a -> <A HREF="ZipDataflow.html#t%3ABackwardTransfers" >BackwardTransfers</A > m l a -> <A HREF="ZipDataflow.html#t%3ABackwardRewrites" >BackwardRewrites</A > m l a -> a -> <A HREF="ZipCfg.html#t%3ALGraph" >LGraph</A > m l -> <A HREF="OptimizationFuel.html#t%3AFuelMonad" >FuelMonad</A > (<A HREF="ZipDataflow.html#t%3ABackwardFixedPoint" >BackwardFixedPoint</A > m l a (<A HREF="ZipCfg.html#t%3ALGraph" >LGraph</A > m l))</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:zdfFRewriteFromL" ><A NAME="v%3AzdfFRewriteFromL" ></A ></A ><B >zdfFRewriteFromL</B > :: (<A HREF="ZipDataflow.html#t%3ADebugNodes" >DebugNodes</A > m l, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > a) => <A HREF="ZipDataflow.html#t%3ARewritingDepth" >RewritingDepth</A > -> <A HREF="BlockId.html#t%3ABlockEnv" >BlockEnv</A > a -> PassName -> <A HREF="DFMonad.html#t%3ADataflowLattice" >DataflowLattice</A > a -> <A HREF="ZipDataflow.html#t%3AForwardTransfers" >ForwardTransfers</A > m l a -> <A HREF="ZipDataflow.html#t%3AForwardRewrites" >ForwardRewrites</A > m l a -> a -> <A HREF="ZipCfg.html#t%3ALGraph" >LGraph</A > m l -> <A HREF="OptimizationFuel.html#t%3AFuelMonad" >FuelMonad</A > (<A HREF="ZipDataflow.html#t%3AForwardFixedPoint" >ForwardFixedPoint</A > m l a (<A HREF="ZipCfg.html#t%3ALGraph" >LGraph</A > m l))</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="botbar" >Produced by <A HREF="http://www.haskell.org/haddock/" >Haddock</A > version 2.6.1</TD ></TR ></TABLE ></BODY ></HTML >