<!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 >MkZipCfg</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_MkZipCfg.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" >MkZipCfg</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" >data</SPAN > <A HREF="#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3A%3C%2A%3E" >(<*>)</A > :: <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AcatAGraphs" >catAGraphs</A > :: [<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l] -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AfreshBlockId" >freshBlockId</A > :: <A HREF="UniqSupply.html#t%3AMonadUnique" >MonadUnique</A > m => <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> m <A HREF="BlockId.html#t%3ABlockId" >BlockId</A ></TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AemptyAGraph" >emptyAGraph</A > :: <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AwithFreshLabel" >withFreshLabel</A > :: <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> (<A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l) -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AwithUnique" >withUnique</A > :: (<A HREF="Unique.html#t%3AUnique" >Unique</A > -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l) -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkMiddle" >mkMiddle</A > :: m -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkMiddles" >mkMiddles</A > :: [m] -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkLast" >mkLast</A > :: (<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) => l -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkZTail" >mkZTail</A > :: (<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="ZipCfg.html#t%3AZTail" >ZTail</A > m l -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkBranch" >mkBranch</A > :: (<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="BlockId.html#t%3ABlockId" >BlockId</A > -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkLabel" >mkLabel</A > :: <A HREF="ZipCfg.html#t%3ALastNode" >LastNode</A > l => <A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkIfThenElse" >mkIfThenElse</A > :: (<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="BlockId.html#t%3ABlockId" >BlockId</A > -> <A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l) -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AmkWhileDo" >mkWhileDo</A > :: (<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="BlockId.html#t%3ABlockId" >BlockId</A > -> <A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l) -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AoutOfLine" >outOfLine</A > :: (<A HREF="ZipCfg.html#t%3ALastNode" >LastNode</A > l, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > m, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > l) => <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AemptyGraph" >emptyGraph</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%3AgraphOfMiddles" >graphOfMiddles</A > :: [m] -> <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%3AgraphOfZTail" >graphOfZTail</A > :: <A HREF="ZipCfg.html#t%3AZTail" >ZTail</A > m l -> <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%3AlgraphOfAGraph" >lgraphOfAGraph</A > :: <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="UniqSupply.html#t%3AUniqSM" >UniqSM</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%3AgraphOfAGraph" >graphOfAGraph</A > :: <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="UniqSupply.html#t%3AUniqSM" >UniqSM</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%3AlabelAGraph" >labelAGraph</A > :: <A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="UniqSupply.html#t%3AUniqSM" >UniqSM</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%3ApprAGraph" >pprAGraph</A > :: (<A HREF="Outputable.html#t%3AOutputable" >Outputable</A > m, <A HREF="ZipCfg.html#t%3ALastNode" >LastNode</A > l, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > l) => <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="UniqSupply.html#t%3AUniqSM" >UniqSM</A > <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></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" >data</SPAN > <A NAME="t:AGraph" ><A NAME="t%3AAGraph" ></A ></A ><B >AGraph</B > m l </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:<*>" ><A NAME="v%3A%3C%2A%3E" ></A ></A ><B >(<*>)</B > :: <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:catAGraphs" ><A NAME="v%3AcatAGraphs" ></A ></A ><B >catAGraphs</B > :: [<A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l] -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:freshBlockId" ><A NAME="v%3AfreshBlockId" ></A ></A ><B >freshBlockId</B > :: <A HREF="UniqSupply.html#t%3AMonadUnique" >MonadUnique</A > m => <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> m <A HREF="BlockId.html#t%3ABlockId" >BlockId</A ></TD ></TR ><TR ><TD CLASS="doc" >The string argument to <TT ><A HREF="MkZipCfg.html#v%3AfreshBlockId" >freshBlockId</A ></TT > was originally helpful in debugging the Quick C-- compiler, so I have kept it here even though at present it is thrown away at this spot---there's no reason a BlockId couldn't one day carry a string. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:emptyAGraph" ><A NAME="v%3AemptyAGraph" ></A ></A ><B >emptyAGraph</B > :: <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="doc" >A graph is built up by splicing together graphs each containing a single node (where a label is considered a first node. The empty graph is a left and right unit for splicing. All of the AGraph constructors (even complex ones like <TT ><A HREF="MkZipCfg.html#v%3AmkIfThenElse" >mkIfThenElse</A ></TT >, as well as the splicing operation <A HREF="*" >*</A >, are constant-time operations. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:withFreshLabel" ><A NAME="v%3AwithFreshLabel" ></A ></A ><B >withFreshLabel</B > :: <A HREF="../base-4.2.0.2/Data-Char.html#t%3AString" >String</A > -> (<A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l) -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="doc" >This function provides access to fresh labels without requiring clients to be programmed monadically. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:withUnique" ><A NAME="v%3AwithUnique" ></A ></A ><B >withUnique</B > :: (<A HREF="Unique.html#t%3AUnique" >Unique</A > -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l) -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkMiddle" ><A NAME="v%3AmkMiddle" ></A ></A ><B >mkMiddle</B > :: m -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkMiddles" ><A NAME="v%3AmkMiddles" ></A ></A ><B >mkMiddles</B > :: [m] -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkLast" ><A NAME="v%3AmkLast" ></A ></A ><B >mkLast</B > :: (<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) => l -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkZTail" ><A NAME="v%3AmkZTail" ></A ></A ><B >mkZTail</B > :: (<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="ZipCfg.html#t%3AZTail" >ZTail</A > m l -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkBranch" ><A NAME="v%3AmkBranch" ></A ></A ><B >mkBranch</B > :: (<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="BlockId.html#t%3ABlockId" >BlockId</A > -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkLabel" ><A NAME="v%3AmkLabel" ></A ></A ><B >mkLabel</B > :: <A HREF="ZipCfg.html#t%3ALastNode" >LastNode</A > l => <A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkIfThenElse" ><A NAME="v%3AmkIfThenElse" ></A ></A ><B >mkIfThenElse</B > :: (<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="BlockId.html#t%3ABlockId" >BlockId</A > -> <A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l) -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="doc" ><P >For the structured control-flow constructs, a condition is represented as a function that takes as arguments the labels to goto on truth or falsehood. </P ><P >mkIfThenElse mk_cond then else = (mk_cond L1 L2) <A HREF="*> L1: then <*" >*> L1: then <*</A > goto J <A HREF="*> L2: else <*" >*> L2: else <*</A > goto J <A HREF="*" >*</A > J: </P ><P >where L1, L2, J are fresh </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:mkWhileDo" ><A NAME="v%3AmkWhileDo" ></A ></A ><B >mkWhileDo</B > :: (<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="BlockId.html#t%3ABlockId" >BlockId</A > -> <A HREF="BlockId.html#t%3ABlockId" >BlockId</A > -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l) -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:outOfLine" ><A NAME="v%3AoutOfLine" ></A ></A ><B >outOfLine</B > :: (<A HREF="ZipCfg.html#t%3ALastNode" >LastNode</A > l, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > m, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > l) => <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ></TR ><TR ><TD CLASS="doc" ><P >The argument is an AGraph that has an empty entry sequence and no exit sequence. The result is a new AGraph that has an empty entry sequence connected to an empty exit sequence, with the original graph sitting to the side out-of-line. </P ><P >Example: mkMiddle (x = 3) <A HREF="*> outOfLine (mkLabel L <*" >*> outOfLine (mkLabel L <*</A > ...stuff...) <A HREF="*" >*</A > mkMiddle (y = x) Control will flow directly from x=3 to y=x; the block starting with L is <A HREF="on the side.html" >on the side</A >. </P ><P >N.B. algebraically forall g g' : g <A HREF="*> outOfLine g' == outOfLine g' <*" >*> outOfLine g' == outOfLine g' <*</A > g </P ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:emptyGraph" ><A NAME="v%3AemptyGraph" ></A ></A ><B >emptyGraph</B > :: <A HREF="ZipCfg.html#t%3AGraph" >Graph</A > m l</TD ></TR ><TR ><TD CLASS="doc" >The functions below build Graphs directly; for convenience, they are included here with the rest of the constructor functions. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:graphOfMiddles" ><A NAME="v%3AgraphOfMiddles" ></A ></A ><B >graphOfMiddles</B > :: [m] -> <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:graphOfZTail" ><A NAME="v%3AgraphOfZTail" ></A ></A ><B >graphOfZTail</B > :: <A HREF="ZipCfg.html#t%3AZTail" >ZTail</A > m l -> <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:lgraphOfAGraph" ><A NAME="v%3AlgraphOfAGraph" ></A ></A ><B >lgraphOfAGraph</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="UniqSupply.html#t%3AUniqSM" >UniqSM</A > (<A HREF="ZipCfg.html#t%3ALGraph" >LGraph</A > m l)</TD ><TD CLASS="rdoc" >allocate a fresh label for the entry point </TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:graphOfAGraph" ><A NAME="v%3AgraphOfAGraph" ></A ></A ><B >graphOfAGraph</B > :: <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="UniqSupply.html#t%3AUniqSM" >UniqSM</A > (<A HREF="ZipCfg.html#t%3AGraph" >Graph</A > m l)</TD ></TR ><TR ><TD CLASS="doc" >Converting an abstract graph to a concrete form is expensive: the cost is linear in the number of nodes in the answer, plus N log N in the number of basic blocks. The conversion is also monadic because it may require the allocation of fresh, unique labels. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:labelAGraph" ><A NAME="v%3AlabelAGraph" ></A ></A ><B >labelAGraph</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="BlockId.html#t%3ABlockId" >BlockId</A ></TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="UniqSupply.html#t%3AUniqSM" >UniqSM</A > (<A HREF="ZipCfg.html#t%3ALGraph" >LGraph</A > m l)</TD ><TD CLASS="rdoc" >use the given BlockId as the label of the entry point </TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:pprAGraph" ><A NAME="v%3ApprAGraph" ></A ></A ><B >pprAGraph</B > :: (<A HREF="Outputable.html#t%3AOutputable" >Outputable</A > m, <A HREF="ZipCfg.html#t%3ALastNode" >LastNode</A > l, <A HREF="Outputable.html#t%3AOutputable" >Outputable</A > l) => <A HREF="MkZipCfg.html#t%3AAGraph" >AGraph</A > m l -> <A HREF="UniqSupply.html#t%3AUniqSM" >UniqSM</A > <A HREF="Outputable.html#t%3ASDoc" >SDoc</A ></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 >