Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > db7a4a658d190b3e658423135710c498 > files > 651

ghc-darcs-devel-2.8.3-1.fc18.i686.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>Darcs.Patch.Permutations</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_Darcs-Patch-Permutations.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Darcs-Patch-Permutations.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">darcs-2.8.3: a distributed, interactive, smart revision control system</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>Safe-Infered</td></tr></table><p class="caption">Darcs.Patch.Permutations</p></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:removeFL">removeFL</a> :: (<a href="Darcs-Witnesses-Eq.html#t:MyEq">MyEq</a> p, <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p) =&gt; p x y -&gt; <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p x z -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p y z)</li><li class="src short"><a href="#v:removeRL">removeRL</a> :: (<a href="Darcs-Witnesses-Eq.html#t:MyEq">MyEq</a> p, <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p) =&gt; p y z -&gt; <a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p x z -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p x y)</li><li class="src short"><a href="#v:removeCommon">removeCommon</a> :: (<a href="Darcs-Witnesses-Eq.html#t:MyEq">MyEq</a> p, <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p) =&gt; (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-92--47-:">:\/:</a> <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p) x y -&gt; (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-92--47-:">:\/:</a> <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p) x y</li><li class="src short"><a href="#v:commuteWhatWeCanFL">commuteWhatWeCanFL</a> :: <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p =&gt; (p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p) x y -&gt; (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> (p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p)) x y</li><li class="src short"><a href="#v:commuteWhatWeCanRL">commuteWhatWeCanRL</a> :: <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p =&gt; (<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> p) x y -&gt; (<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> (p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> <a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p)) x y</li><li class="src short"><a href="#v:genCommuteWhatWeCanRL">genCommuteWhatWeCanRL</a> ::  (<span class="keyword">forall</span> a b.  (p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> p) a b -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> ((p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> p) a b)) -&gt; (<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> p) x y -&gt; (<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> (p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> <a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p)) x y</li><li class="src short"><a href="#v:partitionFL">partitionFL</a> :: <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p =&gt; (<span class="keyword">forall</span> u v.  p u v -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p x y -&gt; (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p)) x y</li><li class="src short"><a href="#v:partitionRL">partitionRL</a> :: <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p =&gt; (<span class="keyword">forall</span> u v.  p u v -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Bool.html#t:Bool">Bool</a>) -&gt; <a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p x y -&gt; (<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> <a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p) x y</li><li class="src short"><a href="#v:simpleHeadPermutationsFL">simpleHeadPermutationsFL</a> :: <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p =&gt; <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p x y -&gt; [<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p x y]</li><li class="src short"><a href="#v:headPermutationsRL">headPermutationsRL</a> :: <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p =&gt; <a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p x y -&gt; [<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p x y]</li><li class="src short"><a href="#v:headPermutationsFL">headPermutationsFL</a> :: <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p =&gt; <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p x y -&gt; [(p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p) x y]</li><li class="src short"><a href="#v:removeSubsequenceFL">removeSubsequenceFL</a> :: (<a href="Darcs-Witnesses-Eq.html#t:MyEq">MyEq</a> p, <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p) =&gt; <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p a b -&gt; <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p a c -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p b c)</li><li class="src short"><a href="#v:removeSubsequenceRL">removeSubsequenceRL</a> :: (<a href="Darcs-Witnesses-Eq.html#t:MyEq">MyEq</a> p, <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p) =&gt; <a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p ab abc -&gt; <a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p a abc -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p a ab)</li><li class="src short"><a href="#v:partitionConflictingFL">partitionConflictingFL</a> :: (<a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p1, <a href="Darcs-Patch-Invert.html#t:Invert">Invert</a> p1) =&gt; <a href="Darcs-Patch-Permutations.html#t:CommuteFn">CommuteFn</a> p1 p2 -&gt; <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p1 x y -&gt; p2 x z -&gt; (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p1 <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p1) x y</li><li class="src short"><span class="keyword">type</span> <a href="#t:CommuteFn">CommuteFn</a> p1 p2 = <span class="keyword">forall</span> x y.  (p1 <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> p2) x y -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> ((p2 <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> p1) x y)</li><li class="src short"><a href="#v:selfCommuter">selfCommuter</a> :: <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p =&gt; <a href="Darcs-Patch-Permutations.html#t:CommuteFn">CommuteFn</a> p p</li><li class="src short"><a href="#v:commuterIdFL">commuterIdFL</a> ::  <a href="Darcs-Patch-Permutations.html#t:CommuteFn">CommuteFn</a> p1 p2 -&gt; <a href="Darcs-Patch-Permutations.html#t:CommuteFn">CommuteFn</a> p1 (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p2)</li><li class="src short"><a href="#v:commuterFLId">commuterFLId</a> ::  <a href="Darcs-Patch-Permutations.html#t:CommuteFn">CommuteFn</a> p1 p2 -&gt; <a href="Darcs-Patch-Permutations.html#t:CommuteFn">CommuteFn</a> (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p1) p2</li><li class="src short"><a href="#v:commuterIdRL">commuterIdRL</a> ::  <a href="Darcs-Patch-Permutations.html#t:CommuteFn">CommuteFn</a> p1 p2 -&gt; <a href="Darcs-Patch-Permutations.html#t:CommuteFn">CommuteFn</a> p1 (<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p2)</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:removeFL" class="def">removeFL</a> :: (<a href="Darcs-Witnesses-Eq.html#t:MyEq">MyEq</a> p, <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p) =&gt; p x y -&gt; <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p x z -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p y z)<a href="src/Darcs-Patch-Permutations.html#removeFL" class="link">Source</a></p><div class="doc"><p><code><a href="Darcs-Patch-Permutations.html#v:removeFL">removeFL</a></code> <code>x xs</code> removes <code>x</code> from <code>xs</code> if <code>x</code> can be commuted to its head.
   Otherwise it returns <code><a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#v:Nothing">Nothing</a></code>
</p></div></div><div class="top"><p class="src"><a name="v:removeRL" class="def">removeRL</a> :: (<a href="Darcs-Witnesses-Eq.html#t:MyEq">MyEq</a> p, <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p) =&gt; p y z -&gt; <a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p x z -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p x y)<a href="src/Darcs-Patch-Permutations.html#removeRL" class="link">Source</a></p><div class="doc"><p><code><a href="Darcs-Patch-Permutations.html#v:removeRL">removeRL</a></code> is like <code><a href="Darcs-Patch-Permutations.html#v:removeFL">removeFL</a></code> except with <code><a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a></code>
</p></div></div><div class="top"><p class="src"><a name="v:removeCommon" class="def">removeCommon</a> :: (<a href="Darcs-Witnesses-Eq.html#t:MyEq">MyEq</a> p, <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p) =&gt; (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-92--47-:">:\/:</a> <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p) x y -&gt; (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-92--47-:">:\/:</a> <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p) x y<a href="src/Darcs-Patch-Permutations.html#removeCommon" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:commuteWhatWeCanFL" class="def">commuteWhatWeCanFL</a> :: <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p =&gt; (p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p) x y -&gt; (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> (p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p)) x y<a href="src/Darcs-Patch-Permutations.html#commuteWhatWeCanFL" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:commuteWhatWeCanRL" class="def">commuteWhatWeCanRL</a> :: <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p =&gt; (<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> p) x y -&gt; (<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> (p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> <a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p)) x y<a href="src/Darcs-Patch-Permutations.html#commuteWhatWeCanRL" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:genCommuteWhatWeCanRL" class="def">genCommuteWhatWeCanRL</a> ::  (<span class="keyword">forall</span> a b.  (p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> p) a b -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> ((p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> p) a b)) -&gt; (<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> p) x y -&gt; (<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> (p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> <a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p)) x y<a href="src/Darcs-Patch-Permutations.html#genCommuteWhatWeCanRL" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:partitionFL" class="def">partitionFL</a><a href="src/Darcs-Patch-Permutations.html#partitionFL" class="link">Source</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; (<span class="keyword">forall</span> u v.  p u v -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Bool.html#t:Bool">Bool</a>)</td><td class="doc"><p>predicate; if true we would like the patch in the <a href="left.html">left</a> list
</p></td></tr><tr><td class="src">-&gt; <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p x y</td><td class="doc"><p>input <code><a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a></code>
</p></td></tr><tr><td class="src">-&gt; (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p)) x y</td><td class="doc"><p><a href="left.html">left</a>, <a href="middle.html">middle</a> and <a href="right.html">right</a>
</p></td></tr></table></div><div class="doc"><p>split an <code><a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a></code> into <a href="left.html">left</a> and <a href="right.html">right</a> lists according to a predicate <code>p</code>, using commutation as necessary.
 If a patch does satisfy the predicate but cannot be commuted past one that does not satisfy
 the predicate, it goes in the <a href="middle.html">middle</a> list; to sum up, we have: <code>all p left</code> and <code>all (not.p) right</code>, while
 midddle is mixed.
</p></div></div><div class="top"><p class="src"><a name="v:partitionRL" class="def">partitionRL</a><a href="src/Darcs-Patch-Permutations.html#partitionRL" class="link">Source</a></p><div class="subs arguments"><p class="caption">Arguments</p><table><tr><td class="src">:: <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p</td><td class="doc empty">&nbsp;</td></tr><tr><td class="src">=&gt; (<span class="keyword">forall</span> u v.  p u v -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Bool.html#t:Bool">Bool</a>)</td><td class="doc"><p>predicate; if true we would like the patch in the <a href="right.html">right</a> list
</p></td></tr><tr><td class="src">-&gt; <a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p x y</td><td class="doc"><p>input <code><a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a></code>
</p></td></tr><tr><td class="src">-&gt; (<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> <a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p) x y</td><td class="doc"><p><a href="left.html">left</a> and <a href="right.html">right</a> results
</p></td></tr></table></div><div class="doc"><p>split an <code><a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a></code> into <a href="left.html">left</a> and <a href="right.html">right</a> lists according to a predicate, using commutation as necessary.
 If a patch does satisfy the predicate but cannot be commuted past one that does not satisfy
 the predicate, it goes in the <a href="left.html">left</a> list.
</p></div></div><div class="top"><p class="src"><a name="v:simpleHeadPermutationsFL" class="def">simpleHeadPermutationsFL</a> :: <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p =&gt; <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p x y -&gt; [<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p x y]<a href="src/Darcs-Patch-Permutations.html#simpleHeadPermutationsFL" class="link">Source</a></p><div class="doc"><p>This is a minor variant of <code><a href="Darcs-Patch-Permutations.html#v:headPermutationsFL">headPermutationsFL</a></code> with each permutation
   is simply returned as a <code><a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a></code>
</p></div></div><div class="top"><p class="src"><a name="v:headPermutationsRL" class="def">headPermutationsRL</a> :: <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p =&gt; <a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p x y -&gt; [<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p x y]<a href="src/Darcs-Patch-Permutations.html#headPermutationsRL" class="link">Source</a></p><div class="doc"><p><code><a href="Darcs-Patch-Permutations.html#v:headPermutationsRL">headPermutationsRL</a></code> is like <code><a href="Darcs-Patch-Permutations.html#v:headPermutationsFL">headPermutationsFL</a></code>, except that we
   operate on an <code><a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a></code> (in other words, we are pushing things to the end of a
   patch sequence instead of to the beginning).
</p></div></div><div class="top"><p class="src"><a name="v:headPermutationsFL" class="def">headPermutationsFL</a> :: <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p =&gt; <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p x y -&gt; [(p <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p) x y]<a href="src/Darcs-Patch-Permutations.html#headPermutationsFL" class="link">Source</a></p><div class="doc"><p><code><a href="Darcs-Patch-Permutations.html#v:headPermutationsFL">headPermutationsFL</a></code> <code>p:&gt;:ps</code> returns all the permutations of the list
   in which one element of <code>ps</code> is commuted past <code>p</code>
</p><p>Suppose we have a sequence of patches
</p><pre>  X h a y s-t-c k
</pre><p>Suppose furthermore that the patch <code>c</code> depends on <code>t</code>, which in turn
   depends on <code>s</code>.  This function will return
</p><pre> X :&gt; h a y s t c k
 h :&gt; X a y s t c k
 a :&gt; X h y s t c k
 y :&gt; X h a s t c k
 s :&gt; X h a y t c k
 k :&gt; X h a y s t c
</pre></div></div><div class="top"><p class="src"><a name="v:removeSubsequenceFL" class="def">removeSubsequenceFL</a> :: (<a href="Darcs-Witnesses-Eq.html#t:MyEq">MyEq</a> p, <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p) =&gt; <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p a b -&gt; <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p a c -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p b c)<a href="src/Darcs-Patch-Permutations.html#removeSubsequenceFL" class="link">Source</a></p><div class="doc"><p><code><a href="Darcs-Patch-Permutations.html#v:removeSubsequenceFL">removeSubsequenceFL</a></code> <code>ab abc</code> returns <code>Just c'</code> where all the patches in
   <code>ab</code> have been commuted out of it, if possible.  If this is not possible
   for any reason (the set of patches <code>ab</code> is not actually a subset of <code>abc</code>,
   or they can't be commuted out) we return <code><a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#v:Nothing">Nothing</a></code>.
</p></div></div><div class="top"><p class="src"><a name="v:removeSubsequenceRL" class="def">removeSubsequenceRL</a> :: (<a href="Darcs-Witnesses-Eq.html#t:MyEq">MyEq</a> p, <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p) =&gt; <a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p ab abc -&gt; <a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p a abc -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p a ab)<a href="src/Darcs-Patch-Permutations.html#removeSubsequenceRL" class="link">Source</a></p><div class="doc"><p><code><a href="Darcs-Patch-Permutations.html#v:removeSubsequenceRL">removeSubsequenceRL</a></code> is like <code>removeSubsequenceFL</code> except that it works
   on <code><a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a></code>
</p></div></div><div class="top"><p class="src"><a name="v:partitionConflictingFL" class="def">partitionConflictingFL</a> :: (<a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p1, <a href="Darcs-Patch-Invert.html#t:Invert">Invert</a> p1) =&gt; <a href="Darcs-Patch-Permutations.html#t:CommuteFn">CommuteFn</a> p1 p2 -&gt; <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p1 x y -&gt; p2 x z -&gt; (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p1 <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> <a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p1) x y<a href="src/Darcs-Patch-Permutations.html#partitionConflictingFL" class="link">Source</a></p><div class="doc"><p>Partition a list into the patches that commute with the given patch and those that don't (including dependencies)
</p></div></div><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CommuteFn" class="def">CommuteFn</a> p1 p2 = <span class="keyword">forall</span> x y.  (p1 <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> p2) x y -&gt; <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Maybe.html#t:Maybe">Maybe</a> ((p2 <a href="Darcs-Witnesses-Ordered.html#t::-62-">:&gt;</a> p1) x y)<a href="src/Darcs-Patch-Permutations.html#CommuteFn" class="link">Source</a></p><div class="doc"><p>CommuteFn is the basis of a general framework for building up commutation
 operations between different patch types in a generic manner. Unfortunately
 type classes are not well suited to the problem because of the multiple possible
 routes by which the commuter for (FL p1, FL p2) can be built out of the
 commuter for (p1, p2) - and more complicated problems when we start building
 multiple constructors on top of each other. The type class resolution machinery
 really can't cope with selecting some route, because it doesn't know that all
 possible routes should be equivalent.
</p></div></div><div class="top"><p class="src"><a name="v:selfCommuter" class="def">selfCommuter</a> :: <a href="Darcs-Patch-Commute.html#t:Commute">Commute</a> p =&gt; <a href="Darcs-Patch-Permutations.html#t:CommuteFn">CommuteFn</a> p p<a href="src/Darcs-Patch-Permutations.html#selfCommuter" class="link">Source</a></p><div class="doc"><p>Build a commuter between a patch and itself using the operation from the type class.
</p></div></div><div class="top"><p class="src"><a name="v:commuterIdFL" class="def">commuterIdFL</a> ::  <a href="Darcs-Patch-Permutations.html#t:CommuteFn">CommuteFn</a> p1 p2 -&gt; <a href="Darcs-Patch-Permutations.html#t:CommuteFn">CommuteFn</a> p1 (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p2)<a href="src/Darcs-Patch-Permutations.html#commuterIdFL" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:commuterFLId" class="def">commuterFLId</a> ::  <a href="Darcs-Patch-Permutations.html#t:CommuteFn">CommuteFn</a> p1 p2 -&gt; <a href="Darcs-Patch-Permutations.html#t:CommuteFn">CommuteFn</a> (<a href="Darcs-Witnesses-Ordered.html#t:FL">FL</a> p1) p2<a href="src/Darcs-Patch-Permutations.html#commuterFLId" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:commuterIdRL" class="def">commuterIdRL</a> ::  <a href="Darcs-Patch-Permutations.html#t:CommuteFn">CommuteFn</a> p1 p2 -&gt; <a href="Darcs-Patch-Permutations.html#t:CommuteFn">CommuteFn</a> p1 (<a href="Darcs-Witnesses-Ordered.html#t:RL">RL</a> p2)<a href="src/Darcs-Patch-Permutations.html#commuterIdRL" class="link">Source</a></p></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.10.0</p></div></body></html>