|
|
|
| Description |
| Conflictor patches
|
|
| Synopsis |
|
|
|
| Documentation |
|
| data RealPatch where |
Duplicate x: This patch has no effect since x is already present in the repository
Etacilpud x: invert (Duplicate x) Normal prim: A primitive patch
Conflictor ix xx x:
ix is the set of patches:
- that conflict with x and also conflict with another patch in the repository
- that conflict with a patch that conflict with x
xx is the sequence of patches that conflict *only* with x
x is the current patch
ix and x are stored as Non objects, which include any necessary
context to uniquely define the patch that is referred to.
InvConflictor ix xx x: like invert (Conflictor ix xx x)
| | Constructors | | Instances | |
|
|
| is_duplicate :: RealPatch -> Bool |
| is_duplicate p is ' True if p is either a Duplicate or Etacilpud patch
|
|
| is_forward :: RealPatch -> Maybe Doc |
| This is only used for unit testing
|
|
| mergeUnravelled :: [Sealed (FL Prim)] -> Maybe (FlippedSeal RealPatch) |
|
| sealed2non :: Sealed (FL Prim) -> Non RealPatch |
| sealed2non (Sealed xs) converts xs to a Non.
xs must be non-empty since we split this list at the last patch
|
|
| mergeConflictingNons :: [Non RealPatch] -> Maybe (FL RealPatch) |
|
| join_effects :: Effect p => p -> FL Prim |
|
| assertConsistent :: RealPatch -> RealPatch |
|
| mergeAfterConflicting :: FL RealPatch -> FL Prim -> Maybe (FL RealPatch, FL RealPatch) |
| mergeAfterConflicting takes as input a sequence of conflicting
patches xxx (which therefore have no effect) and a sequence of
primitive patches yyy that follow said sequence of conflicting
patches, and may depend upon some of the conflicting patches (as a
resolution).
|
|
| geteff :: [Non RealPatch] -> FL Prim -> ([Non RealPatch], FL RealPatch) |
|
| xx2nons :: [Non RealPatch] -> FL Prim -> [Non RealPatch] |
|
| xx2patches :: [Non RealPatch] -> FL Prim -> FL RealPatch |
|
| allNormal :: FL RealPatch -> Maybe (FL Prim) |
| If xs consists only of Normal patches, allNormal xs returns
Just pxs those patches (so lengthFL pxs == lengthFL xs).
Otherwise, it returns Nothing.
|
|
| is_consistent :: RealPatch -> Maybe Doc |
| This is used for unit-testing and for internal sanity checks
|
|
| everyone_conflicts :: [Non RealPatch] -> Bool |
|
| prim2real :: Prim -> RealPatch |
|
| merge_with :: Non RealPatch -> [Non RealPatch] -> Sealed (FL Prim) |
|
| eqSet :: Eq a => [a] -> [a] -> Bool |
|
| remove1 :: Eq a => a -> [a] -> Maybe [a] |
|
| minus :: Eq a => [a] -> [a] -> Maybe [a] |
|
| invertNon :: Non RealPatch -> Non RealPatch |
|
| nonTouches :: Non RealPatch -> [FilePath] |
|
| toNons :: (Conflict p, Patchy p, ToFromPrim p, Nonable p) => FL p -> [Non p] |
|
| initsFL :: Patchy p => FL p -> [Sealed (p :> FL p)] |
|
| fromNons :: [Non RealPatch] -> Maybe (Sealed (FL Prim)) |
|
| pullInContext :: [Non RealPatch] -> Maybe (Sealed Prim, [Non RealPatch]) |
|
| filterConflictsFL :: Non RealPatch -> FL Prim -> FL Prim :> FL Prim |
|
| all_conflicts_with :: Non RealPatch -> [Non RealPatch] -> ([Non RealPatch], [Non RealPatch]) |
|
| conflicts_with :: Non RealPatch -> Non RealPatch -> Bool |
|
| depends_upon :: Non RealPatch -> Non RealPatch -> Bool |
|
| (+++) :: Eq a => [a] -> [a] -> [a] |
|
| swapMerge :: (RealPatch :\/: RealPatch) -> RealPatch :/\: RealPatch |
|
| invertCommute :: (RealPatch :> RealPatch) -> Maybe (RealPatch :> RealPatch) |
|
| invertCommuteNC :: (RealPatch :> RealPatch) -> Maybe (RealPatch :> RealPatch) |
|
| pullCommon :: Patchy p => FL p -> FL p -> Common p |
| pullCommon xs ys returns the set of patches that can be commuted
out of both xs and ys along with the remnants of both lists
|
|
| data Common p where |
| Common cs xs ys represents two sequences of patches that have cs in common,
in other words cs +>+ xs and cs +>+ ys
| | Constructors | |
|
|
| pullCommonRL :: Patchy p => RL p -> RL p -> CommonRL p |
| pullCommonRL xs ys returns the set of patches that can be commuted
out of both xs and ys along with the remnants of both lists
|
|
| data CommonRL p where |
| CommonRL xs ys cs' represents two sequences of patches that have cs in common,
in other words xs +<+ cs and ys +<+ cs
| | Constructors | |
|
|
| Produced by Haddock version 2.4.2 |