Sophie

Sophie

distrib > Mageia > 5 > i586 > media > core-release > by-pkgid > 6e204a966e8c42d976f99a1700ce5f20 > files > 2892

ghc-7.4.2-4.mga5.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>GraphOps</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_GraphOps.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">ghc-7.4.2: The GHC API</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>None</td></tr></table><p class="caption">GraphOps</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>Basic operations on graphs.
</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:addNode">addNode</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; k -&gt; <a href="GraphBase.html#t:Node">Node</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</li><li class="src short"><a href="#v:delNode">delNode</a> :: (<a href="Unique.html#t:Uniquable">Uniquable</a> k, <a href="Outputable.html#t:Outputable">Outputable</a> k) =&gt; k -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="GraphBase.html#t:Graph">Graph</a> k cls color)</li><li class="src short"><a href="#v:getNode">getNode</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; k -&gt; <a href="GraphBase.html#t:Node">Node</a> k cls color</li><li class="src short"><a href="#v:lookupNode">lookupNode</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; k -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="GraphBase.html#t:Node">Node</a> k cls color)</li><li class="src short"><a href="#v:modNode">modNode</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; (<a href="GraphBase.html#t:Node">Node</a> k cls color -&gt; <a href="GraphBase.html#t:Node">Node</a> k cls color) -&gt; k -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="GraphBase.html#t:Graph">Graph</a> k cls color)</li><li class="src short"><a href="#v:size">size</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></li><li class="src short"><a href="#v:union">union</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</li><li class="src short"><a href="#v:addConflict">addConflict</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; (k, cls) -&gt; (k, cls) -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</li><li class="src short"><a href="#v:delConflict">delConflict</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; k -&gt; k -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="GraphBase.html#t:Graph">Graph</a> k cls color)</li><li class="src short"><a href="#v:addConflicts">addConflicts</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> k -&gt; (k -&gt; cls) -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</li><li class="src short"><a href="#v:addCoalesce">addCoalesce</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; (k, cls) -&gt; (k, cls) -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</li><li class="src short"><a href="#v:delCoalesce">delCoalesce</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; k -&gt; k -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="GraphBase.html#t:Graph">Graph</a> k cls color)</li><li class="src short"><a href="#v:addExclusion">addExclusion</a> :: (<a href="Unique.html#t:Uniquable">Uniquable</a> k, <a href="Unique.html#t:Uniquable">Uniquable</a> color) =&gt; k -&gt; (k -&gt; cls) -&gt; color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</li><li class="src short"><a href="#v:addExclusions">addExclusions</a> :: (<a href="Unique.html#t:Uniquable">Uniquable</a> k, <a href="Unique.html#t:Uniquable">Uniquable</a> color) =&gt; k -&gt; (k -&gt; cls) -&gt; [color] -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</li><li class="src short"><a href="#v:addPreference">addPreference</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; (k, cls) -&gt; color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</li><li class="src short"><a href="#v:coalesceNodes">coalesceNodes</a> :: (<a href="Unique.html#t:Uniquable">Uniquable</a> k, <a href="../base-4.5.1.0/Data-Ord.html#t:Ord">Ord</a> k, <a href="../base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> cls, <a href="Outputable.html#t:Outputable">Outputable</a> k) =&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a> -&gt; <a href="GraphBase.html#t:Triv">Triv</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; (k, k) -&gt; (<a href="GraphBase.html#t:Graph">Graph</a> k cls color, <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (k, k))</li><li class="src short"><a href="#v:coalesceGraph">coalesceGraph</a> :: (<a href="Unique.html#t:Uniquable">Uniquable</a> k, <a href="../base-4.5.1.0/Data-Ord.html#t:Ord">Ord</a> k, <a href="../base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> cls, <a href="Outputable.html#t:Outputable">Outputable</a> k) =&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a> -&gt; <a href="GraphBase.html#t:Triv">Triv</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; (<a href="GraphBase.html#t:Graph">Graph</a> k cls color, [(k, k)])</li><li class="src short"><a href="#v:freezeNode">freezeNode</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; k -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</li><li class="src short"><a href="#v:freezeOneInGraph">freezeOneInGraph</a> :: (<a href="Unique.html#t:Uniquable">Uniquable</a> k, <a href="Outputable.html#t:Outputable">Outputable</a> k) =&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; (<a href="GraphBase.html#t:Graph">Graph</a> k cls color, <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>)</li><li class="src short"><a href="#v:freezeAllInGraph">freezeAllInGraph</a> :: (<a href="Unique.html#t:Uniquable">Uniquable</a> k, <a href="Outputable.html#t:Outputable">Outputable</a> k) =&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</li><li class="src short"><a href="#v:scanGraph">scanGraph</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; (<a href="GraphBase.html#t:Node">Node</a> k cls color -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; [<a href="GraphBase.html#t:Node">Node</a> k cls color]</li><li class="src short"><a href="#v:setColor">setColor</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; k -&gt; color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</li><li class="src short"><a href="#v:validateGraph">validateGraph</a> :: (<a href="Unique.html#t:Uniquable">Uniquable</a> k, <a href="Outputable.html#t:Outputable">Outputable</a> k, <a href="../base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> color) =&gt; <a href="Outputable.html#t:SDoc">SDoc</a> -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a> -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</li><li class="src short"><a href="#v:slurpNodeConflictCount">slurpNodeConflictCount</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="UniqFM.html#t:UniqFM">UniqFM</a> (<a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>)</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:addNode" class="def">addNode</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; k -&gt; <a href="GraphBase.html#t:Node">Node</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</p><div class="doc"><p>Add a node to the graph, linking up its edges
</p></div></div><div class="top"><p class="src"><a name="v:delNode" class="def">delNode</a> :: (<a href="Unique.html#t:Uniquable">Uniquable</a> k, <a href="Outputable.html#t:Outputable">Outputable</a> k) =&gt; k -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="GraphBase.html#t:Graph">Graph</a> k cls color)</p><div class="doc"><p>Delete a node and all its edges from the graph.
</p></div></div><div class="top"><p class="src"><a name="v:getNode" class="def">getNode</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; k -&gt; <a href="GraphBase.html#t:Node">Node</a> k cls color</p><div class="doc"><p>Get a node from the graph, throwing an error if it's not there
</p></div></div><div class="top"><p class="src"><a name="v:lookupNode" class="def">lookupNode</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; k -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="GraphBase.html#t:Node">Node</a> k cls color)</p><div class="doc"><p>Lookup a node from the graph.
</p></div></div><div class="top"><p class="src"><a name="v:modNode" class="def">modNode</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; (<a href="GraphBase.html#t:Node">Node</a> k cls color -&gt; <a href="GraphBase.html#t:Node">Node</a> k cls color) -&gt; k -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="GraphBase.html#t:Graph">Graph</a> k cls color)</p><div class="doc"><p>Modify a node in the graph.
	returns Nothing if the node isn't present.
</p></div></div><div class="top"><p class="src"><a name="v:size" class="def">size</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a></p><div class="doc"><p>Get the size of the graph, O(n)
</p></div></div><div class="top"><p class="src"><a name="v:union" class="def">union</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</p><div class="doc"><p>Union two graphs together.
</p></div></div><div class="top"><p class="src"><a name="v:addConflict" class="def">addConflict</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; (k, cls) -&gt; (k, cls) -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</p><div class="doc"><p>Add a conflict between nodes to the graph, creating the nodes required.
	Conflicts are virtual regs which need to be colored differently.
</p></div></div><div class="top"><p class="src"><a name="v:delConflict" class="def">delConflict</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; k -&gt; k -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="GraphBase.html#t:Graph">Graph</a> k cls color)</p><div class="doc"><p>Delete a conflict edge. k1 -&gt; k2
	returns Nothing if the node isn't in the graph
</p></div></div><div class="top"><p class="src"><a name="v:addConflicts" class="def">addConflicts</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; <a href="UniqSet.html#t:UniqSet">UniqSet</a> k -&gt; (k -&gt; cls) -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</p><div class="doc"><p>Add some conflicts to the graph, creating nodes if required.
	All the nodes in the set are taken to conflict with each other.
</p></div></div><div class="top"><p class="src"><a name="v:addCoalesce" class="def">addCoalesce</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; (k, cls) -&gt; (k, cls) -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</p><div class="doc"><p>Add a coalescence edge to the graph, creating nodes if requried.
	It is considered adventageous to assign the same color to nodes in a coalesence.
</p></div></div><div class="top"><p class="src"><a name="v:delCoalesce" class="def">delCoalesce</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; k -&gt; k -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="GraphBase.html#t:Graph">Graph</a> k cls color)</p><div class="doc"><p>Delete a coalescence edge (k1 -&gt; k2) from the graph.
</p></div></div><div class="top"><p class="src"><a name="v:addExclusion" class="def">addExclusion</a> :: (<a href="Unique.html#t:Uniquable">Uniquable</a> k, <a href="Unique.html#t:Uniquable">Uniquable</a> color) =&gt; k -&gt; (k -&gt; cls) -&gt; color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</p><div class="doc"><p>Add an exclusion to the graph, creating nodes if required.
	These are extra colors that the node cannot use.
</p></div></div><div class="top"><p class="src"><a name="v:addExclusions" class="def">addExclusions</a> :: (<a href="Unique.html#t:Uniquable">Uniquable</a> k, <a href="Unique.html#t:Uniquable">Uniquable</a> color) =&gt; k -&gt; (k -&gt; cls) -&gt; [color] -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</p></div><div class="top"><p class="src"><a name="v:addPreference" class="def">addPreference</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; (k, cls) -&gt; color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</p><div class="doc"><p>Add a color preference to the graph, creating nodes if required.
	The most recently added preference is the most prefered.
	The algorithm tries to assign a node it's prefered color if possible.
</p></div></div><div class="top"><p class="src"><a name="v:coalesceNodes" class="def">coalesceNodes</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: (<a href="Unique.html#t:Uniquable">Uniquable</a> k, <a href="../base-4.5.1.0/Data-Ord.html#t:Ord">Ord</a> k, <a href="../base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> cls, <a href="Outputable.html#t:Outputable">Outputable</a> k)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></td><td class="doc"><p>If True, coalesce nodes even if this might make the graph
	less colorable (aggressive coalescing)
</p></td></tr><tr><td class="src">-&gt; <a href="GraphBase.html#t:Triv">Triv</a> k cls color</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; (k, k)</td><td class="doc"><p>keys of the nodes to be coalesced
</p></td></tr><tr><td class="src">-&gt; (<a href="GraphBase.html#t:Graph">Graph</a> k cls color, <a href="../base-4.5.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (k, k))</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Coalesce this pair of nodes unconditionally / agressively.
	The resulting node is the one with the least key.
</p><p>returns: Just 	 the pair of keys if the nodes were coalesced
			 the second element of the pair being the least one
</p><p>Nothing if either of the nodes weren't in the graph
</p></div></div><div class="top"><p class="src"><a name="v:coalesceGraph" class="def">coalesceGraph</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: (<a href="Unique.html#t:Uniquable">Uniquable</a> k, <a href="../base-4.5.1.0/Data-Ord.html#t:Ord">Ord</a> k, <a href="../base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> cls, <a href="Outputable.html#t:Outputable">Outputable</a> k)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></td><td class="doc"><p>If True, coalesce nodes even if this might make the graph
	less colorable (aggressive coalescing)
</p></td></tr><tr><td class="src">-&gt; <a href="GraphBase.html#t:Triv">Triv</a> k cls color</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; (<a href="GraphBase.html#t:Graph">Graph</a> k cls color, [(k, k)])</td><td class="doc empty">&nbsp;</td></tr></table></div><div class="doc"><p>Do agressive coalescing on this graph.
	returns	the new graph and the list of pairs of nodes that got coaleced together.
	for each pair, the resulting node will have the least key and be second in the pair.
</p></div></div><div class="top"><p class="src"><a name="v:freezeNode" class="def">freezeNode</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Unique.html#t:Uniquable">Uniquable</a> k</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; k</td><td class="doc"><p>key of the node to freeze
</p></td></tr><tr><td class="src">-&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</td><td class="doc"><p>the graph
</p></td></tr><tr><td class="src">-&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</td><td class="doc"><p>graph with that node frozen
</p></td></tr></table></div><div class="doc"><p>Freeze a node
	This is for the iterative coalescer.
	By freezing a node we give up on ever coalescing it.
	Move all its coalesce edges into the frozen set - and update
	back edges from other nodes.
</p></div></div><div class="top"><p class="src"><a name="v:freezeOneInGraph" class="def">freezeOneInGraph</a> :: (<a href="Unique.html#t:Uniquable">Uniquable</a> k, <a href="Outputable.html#t:Outputable">Outputable</a> k) =&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; (<a href="GraphBase.html#t:Graph">Graph</a> k cls color, <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>)</p><div class="doc"><p>Freeze one node in the graph
	This if for the iterative coalescer.
	Look for a move related node of low degree and freeze it.
</p><p>We probably don't need to scan the whole graph looking for the node of absolute
	lowest degree. Just sample the first few and choose the one with the lowest 
	degree out of those. Also, we don't make any distinction between conflicts of different
	classes.. this is just a heuristic, after all.
</p><p>IDEA:	freezing a node might free it up for Simplify.. would be good to check for triv
		right here, and add it to a worklist if known triv/non-move nodes.
</p></div></div><div class="top"><p class="src"><a name="v:freezeAllInGraph" class="def">freezeAllInGraph</a> :: (<a href="Unique.html#t:Uniquable">Uniquable</a> k, <a href="Outputable.html#t:Outputable">Outputable</a> k) =&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</p><div class="doc"><p>Freeze all the nodes in the graph
	for debugging the iterative allocator.
</p></div></div><div class="top"><p class="src"><a name="v:scanGraph" class="def">scanGraph</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; (<a href="GraphBase.html#t:Node">Node</a> k cls color -&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; [<a href="GraphBase.html#t:Node">Node</a> k cls color]</p><div class="doc"><p>Find all the nodes in the graph that meet some criteria
</p></div></div><div class="top"><p class="src"><a name="v:setColor" class="def">setColor</a> :: <a href="Unique.html#t:Uniquable">Uniquable</a> k =&gt; k -&gt; color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color -&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</p><div class="doc"><p>Set the color of a certain node
</p></div></div><div class="top"><p class="src"><a name="v:validateGraph" class="def">validateGraph</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: (<a href="Unique.html#t:Uniquable">Uniquable</a> k, <a href="Outputable.html#t:Outputable">Outputable</a> k, <a href="../base-4.5.1.0/Data-Eq.html#t:Eq">Eq</a> color)</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="Outputable.html#t:SDoc">SDoc</a></td><td class="doc"><p>extra debugging info to display on error
</p></td></tr><tr><td class="src">-&gt; <a href="../base-4.5.1.0/Data-Bool.html#t:Bool">Bool</a></td><td class="doc"><p>whether this graph is supposed to be colored.
</p></td></tr><tr><td class="src">-&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</td><td class="doc"><p>graph to validate
</p></td></tr><tr><td class="src">-&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</td><td class="doc"><p>validated graph
</p></td></tr></table></div><div class="doc"><p>validate the internal structure of a graph
	all its edges should point to valid nodes
	If they don't then throw an error
</p></div></div><div class="top"><p class="src"><a name="v:slurpNodeConflictCount" class="def">slurpNodeConflictCount</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Unique.html#t:Uniquable">Uniquable</a> k</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; <a href="GraphBase.html#t:Graph">Graph</a> k cls color</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">-&gt; <a href="UniqFM.html#t:UniqFM">UniqFM</a> (<a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>, <a href="../base-4.5.1.0/Data-Int.html#t:Int">Int</a>)</td><td class="doc"><p>(conflict neighbours, num nodes with that many conflicts)
</p></td></tr></table></div><div class="doc"><p>Slurp out a map of how many nodes had a certain number of conflict neighbours
</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.11.0</p></div></body></html>