<!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 >Darcs.Patch.Permutations</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_Darcs-Patch-Permutations.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" >darcs-2.4.4: a distributed, interactive, smart revision control system</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" >Darcs.Patch.Permutations</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" ><A HREF="#v%3AremoveFL" >removeFL</A > :: (<A HREF="Darcs-Witnesses-Ordered.html#t%3AMyEq" >MyEq</A > p, <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p) => p -> <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AremoveRL" >removeRL</A > :: (<A HREF="Darcs-Witnesses-Ordered.html#t%3AMyEq" >MyEq</A > p, <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p) => p -> <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AremoveCommon" >removeCommon</A > :: (<A HREF="Darcs-Witnesses-Ordered.html#t%3AMyEq" >MyEq</A > p, <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p) => (<A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%5C%2F%3A" >:\/:</A > <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p) -> <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%5C%2F%3A" >:\/:</A > <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AcommuteWhatWeCanFL" >commuteWhatWeCanFL</A > :: <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p => (p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p) -> <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > (p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AcommuteWhatWeCanRL" >commuteWhatWeCanRL</A > :: <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p => (<A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > p) -> <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > (p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AgenCommuteWhatWeCanRL" >genCommuteWhatWeCanRL</A > :: ((p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > p) -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Maybe.html#t%3AMaybe" >Maybe</A > (p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > p)) -> (<A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > p) -> <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > (p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApartitionFL" >partitionFL</A > :: <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p => (p -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Bool.html#t%3ABool" >Bool</A >) -> <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p -> <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApartitionRL" >partitionRL</A > :: <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p => (p -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Bool.html#t%3ABool" >Bool</A >) -> <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p -> <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Ahead_permutationsFL" >head_permutationsFL</A > :: <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p => <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p -> [<A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Ahead_permutationsRL" >head_permutationsRL</A > :: <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p => <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p -> [<A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AheadPermutationsFL" >headPermutationsFL</A > :: <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p => <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p -> [p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p]</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aremove_subsequenceFL" >remove_subsequenceFL</A > :: (<A HREF="Darcs-Witnesses-Ordered.html#t%3AMyEq" >MyEq</A > p, <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p) => <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p -> <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3Aremove_subsequenceRL" >remove_subsequenceRL</A > :: (<A HREF="Darcs-Witnesses-Ordered.html#t%3AMyEq" >MyEq</A > p, <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p) => <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p -> <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3ApartitionConflictingFL" >partitionConflictingFL</A > :: (<A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p1, <A HREF="Darcs-Patch-Patchy.html#t%3AInvert" >Invert</A > p1) => <A HREF="Darcs-Patch-Permutations.html#t%3ACommuteFn" >CommuteFn</A > p1 p2 -> <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p1 -> p2 -> <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p1 <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p1</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A HREF="#t%3ACommuteFn" >CommuteFn</A > p1 p2 = (p1 <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > p2) -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Maybe.html#t%3AMaybe" >Maybe</A > (p2 <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > p1)</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AselfCommuter" >selfCommuter</A > :: <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p => <A HREF="Darcs-Patch-Permutations.html#t%3ACommuteFn" >CommuteFn</A > p p</TD ></TR ><TR ><TD CLASS="s8" ></TD ></TR ><TR ><TD CLASS="decl" ><A HREF="#v%3AcommuterIdRL" >commuterIdRL</A > :: <A HREF="Darcs-Patch-Permutations.html#t%3ACommuteFn" >CommuteFn</A > p1 p2 -> <A HREF="Darcs-Patch-Permutations.html#t%3ACommuteFn" >CommuteFn</A > p1 (<A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p2)</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" ><A NAME="v:removeFL" ><A NAME="v%3AremoveFL" ></A ></A ><B >removeFL</B > :: (<A HREF="Darcs-Witnesses-Ordered.html#t%3AMyEq" >MyEq</A > p, <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p) => p -> <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p)</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Darcs-Patch-Permutations.html#v%3AremoveFL" >removeFL</A ></TT > <TT >x xs</TT > removes <TT >x</TT > from <TT >xs</TT > if <TT >x</TT > can be commuted to its head. Otherwise it returns <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Maybe.html#v%3ANothing" >Nothing</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:removeRL" ><A NAME="v%3AremoveRL" ></A ></A ><B >removeRL</B > :: (<A HREF="Darcs-Witnesses-Ordered.html#t%3AMyEq" >MyEq</A > p, <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p) => p -> <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p)</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Darcs-Patch-Permutations.html#v%3AremoveRL" >removeRL</A ></TT > is like <TT ><A HREF="Darcs-Patch-Permutations.html#v%3AremoveFL" >removeFL</A ></TT > except with <TT ><A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:removeCommon" ><A NAME="v%3AremoveCommon" ></A ></A ><B >removeCommon</B > :: (<A HREF="Darcs-Witnesses-Ordered.html#t%3AMyEq" >MyEq</A > p, <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p) => (<A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%5C%2F%3A" >:\/:</A > <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p) -> <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%5C%2F%3A" >:\/:</A > <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:commuteWhatWeCanFL" ><A NAME="v%3AcommuteWhatWeCanFL" ></A ></A ><B >commuteWhatWeCanFL</B > :: <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p => (p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p) -> <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > (p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:commuteWhatWeCanRL" ><A NAME="v%3AcommuteWhatWeCanRL" ></A ></A ><B >commuteWhatWeCanRL</B > :: <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p => (<A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > p) -> <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > (p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:genCommuteWhatWeCanRL" ><A NAME="v%3AgenCommuteWhatWeCanRL" ></A ></A ><B >genCommuteWhatWeCanRL</B > :: ((p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > p) -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Maybe.html#t%3AMaybe" >Maybe</A > (p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > p)) -> (<A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > p) -> <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > (p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p)</TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:partitionFL" ><A NAME="v%3ApartitionFL" ></A ></A ><B >partitionFL</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >=> p -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="rdoc" >input <TT ><A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A ></TT > </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p</TD ><TD CLASS="rdoc" ><A HREF="left.html" >left</A > and <A HREF="right.html" >right</A > results </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2" >split an <TT ><A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A ></TT > 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="right.html" >right</A > list. </TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:partitionRL" ><A NAME="v%3ApartitionRL" ></A ></A ><B >partitionRL</B ></TD ></TR ><TR ><TD CLASS="body" ><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0" ><TR ><TD CLASS="arg" >:: <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="arg" >=> p -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Bool.html#t%3ABool" >Bool</A ></TD ><TD CLASS="rdoc" >input <TT ><A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A ></TT > </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p</TD ><TD CLASS="rdoc" ><A HREF="left.html" >left</A > and <A HREF="right.html" >right</A > results </TD ></TR ><TR ><TD CLASS="arg" >-> <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p</TD ><TD CLASS="rdoc" ></TD ></TR ><TR ><TD CLASS="ndoc" COLSPAN="2" >split an <TT ><A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A ></TT > 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. </TD ></TR ></TABLE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:head_permutationsFL" ><A NAME="v%3Ahead_permutationsFL" ></A ></A ><B >head_permutationsFL</B > :: <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p => <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p -> [<A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p]</TD ></TR ><TR ><TD CLASS="doc" >This is a minor variant of <TT ><A HREF="Darcs-Patch-Permutations.html#v%3AheadPermutationsFL" >headPermutationsFL</A ></TT > with each permutation is simply returned as a <TT ><A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:head_permutationsRL" ><A NAME="v%3Ahead_permutationsRL" ></A ></A ><B >head_permutationsRL</B > :: <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p => <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p -> [<A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p]</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Darcs-Patch-Permutations.html#v%3Ahead_permutationsRL" >head_permutationsRL</A ></TT > is like <TT ><A HREF="Darcs-Patch-Permutations.html#v%3AheadPermutationsFL" >headPermutationsFL</A ></TT >, except that we operate on an <TT ><A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A ></TT > (in other words, we are pushing things to the end of a patch sequence instead of to the beginning). </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:headPermutationsFL" ><A NAME="v%3AheadPermutationsFL" ></A ></A ><B >headPermutationsFL</B > :: <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p => <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p -> [p <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p]</TD ></TR ><TR ><TD CLASS="doc" ><P ><TT ><A HREF="Darcs-Patch-Permutations.html#v%3AheadPermutationsFL" >headPermutationsFL</A ></TT > <TT >p:>:ps</TT > returns all the permutations of the list in which one element of <TT >ps</TT > is commuted past <TT >p</TT > </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 <TT >c</TT > depends on <TT >t</TT >, which in turn depends on <TT >s</TT >. This function will return </P ><PRE > X :> h a y s t c k h :> X a y s t c k a :> X h y s t c k y :> X h a s t c k s :> X h a y t c k k :> X h a y s t c </PRE ></TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:remove_subsequenceFL" ><A NAME="v%3Aremove_subsequenceFL" ></A ></A ><B >remove_subsequenceFL</B > :: (<A HREF="Darcs-Witnesses-Ordered.html#t%3AMyEq" >MyEq</A > p, <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p) => <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p -> <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p)</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Darcs-Patch-Permutations.html#v%3Aremove_subsequenceFL" >remove_subsequenceFL</A ></TT > <TT >ab abc</TT > returns <TT >Just c'</TT > where all the patches in <TT >ab</TT > have been commuted out of it, if possible. If this is not possible for any reason (the set of patches <TT >ab</TT > is not actually a subset of <TT >abc</TT >, or they can't be commuted out) we return <TT ><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Maybe.html#v%3ANothing" >Nothing</A ></TT >. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:remove_subsequenceRL" ><A NAME="v%3Aremove_subsequenceRL" ></A ></A ><B >remove_subsequenceRL</B > :: (<A HREF="Darcs-Witnesses-Ordered.html#t%3AMyEq" >MyEq</A > p, <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p) => <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p -> <A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Maybe.html#t%3AMaybe" >Maybe</A > (<A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p)</TD ></TR ><TR ><TD CLASS="doc" ><TT ><A HREF="Darcs-Patch-Permutations.html#v%3Aremove_subsequenceRL" >remove_subsequenceRL</A ></TT > is like <TT >remove_subsequenceFL</TT > except that it works on <TT ><A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A ></TT > </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:partitionConflictingFL" ><A NAME="v%3ApartitionConflictingFL" ></A ></A ><B >partitionConflictingFL</B > :: (<A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p1, <A HREF="Darcs-Patch-Patchy.html#t%3AInvert" >Invert</A > p1) => <A HREF="Darcs-Patch-Permutations.html#t%3ACommuteFn" >CommuteFn</A > p1 p2 -> <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p1 -> p2 -> <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p1 <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > <A HREF="Darcs-Witnesses-Ordered.html#t%3AFL" >FL</A > p1</TD ></TR ><TR ><TD CLASS="doc" >Partition a list into the patches that commute with the given patch and those that don't (including dependencies) </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><SPAN CLASS="keyword" >type</SPAN > <A NAME="t:CommuteFn" ><A NAME="t%3ACommuteFn" ></A ></A ><B >CommuteFn</B > p1 p2 = (p1 <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > p2) -> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.0/Data-Maybe.html#t%3AMaybe" >Maybe</A > (p2 <A HREF="Darcs-Witnesses-Ordered.html#t%3A%3A%3E" >:></A > p1)</TD ></TR ><TR ><TD CLASS="doc" >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. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:selfCommuter" ><A NAME="v%3AselfCommuter" ></A ></A ><B >selfCommuter</B > :: <A HREF="Darcs-Patch-Patchy.html#t%3ACommute" >Commute</A > p => <A HREF="Darcs-Patch-Permutations.html#t%3ACommuteFn" >CommuteFn</A > p p</TD ></TR ><TR ><TD CLASS="doc" >Build a commuter between a patch and itself using the operation from the type class. </TD ></TR ><TR ><TD CLASS="s15" ></TD ></TR ><TR ><TD CLASS="decl" ><A NAME="v:commuterIdRL" ><A NAME="v%3AcommuterIdRL" ></A ></A ><B >commuterIdRL</B > :: <A HREF="Darcs-Patch-Permutations.html#t%3ACommuteFn" >CommuteFn</A > p1 p2 -> <A HREF="Darcs-Patch-Permutations.html#t%3ACommuteFn" >CommuteFn</A > p1 (<A HREF="Darcs-Witnesses-Ordered.html#t%3ARL" >RL</A > p2)</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.0</TD ></TR ></TABLE ></BODY ></HTML >