| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
Darcs.Patch.V2.Real
- data RealPatch prim wX wY where- Duplicate :: Non (RealPatch prim) wX -> RealPatch prim wX wX
- Etacilpud :: Non (RealPatch prim) wX -> RealPatch prim wX wX
- Normal :: prim wX wY -> RealPatch prim wX wY
- Conflictor :: [Non (RealPatch prim) wX] -> FL prim wX wY -> Non (RealPatch prim) wX -> RealPatch prim wY wX
- InvConflictor :: [Non (RealPatch prim) wX] -> FL prim wX wY -> Non (RealPatch prim) wX -> RealPatch prim wX wY
 
- prim2real :: prim wX wY -> RealPatch prim wX wY
- isConsistent :: PrimPatch prim => RealPatch prim wX wY -> Maybe Doc
- isForward :: PrimPatch prim => RealPatch prim wS wY -> Maybe Doc
- isDuplicate :: RealPatch prim wS wY -> Bool
- mergeUnravelled :: PrimPatch prim => [Sealed (FL prim wX)] -> Maybe (FlippedSeal (RealPatch prim) wX)
Documentation
data RealPatch prim wX wY where Source
RealPatch is used to represents prim patches that are duplicates of, or
 conflict with, another prim patch in the repository.
Normal prim: A primitive patch
Duplicate x: This patch has no effect since x is already present in the
 repository.
Etacilpud x: invert (Duplicate x)
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 original, conflicting patch.
ix and x are stored as Non objects, which include any necessary
  context to uniquely define the patch that is referred to.
The intuition is that a Conflictor should have the effect of inverting any
 patches that x conflicts with, that haven't already been undone by another
 Conflictor in the repository.
 Therefore, the effect of a Conflictor is invert xx.
InvConflictor ix xx x: like invert (Conflictor ix xx x)
Constructors
| Duplicate :: Non (RealPatch prim) wX -> RealPatch prim wX wX | |
| Etacilpud :: Non (RealPatch prim) wX -> RealPatch prim wX wX | |
| Normal :: prim wX wY -> RealPatch prim wX wY | |
| Conflictor :: [Non (RealPatch prim) wX] -> FL prim wX wY -> Non (RealPatch prim) wX -> RealPatch prim wY wX | |
| InvConflictor :: [Non (RealPatch prim) wX] -> FL prim wX wY -> Non (RealPatch prim) wX -> RealPatch prim wX wY | 
Instances
isConsistent :: PrimPatch prim => RealPatch prim wX wY -> Maybe Doc Source
This is used for unit-testing and for internal sanity checks
isForward :: PrimPatch prim => RealPatch prim wS wY -> Maybe Doc Source
isForward p is True if p is either an InvConflictor or
 Etacilpud.
isDuplicate :: RealPatch prim wS wY -> Bool Source
isDuplicate p is True if p is either a Duplicate or Etacilpud
 patch.
mergeUnravelled :: PrimPatch prim => [Sealed (FL prim wX)] -> Maybe (FlippedSeal (RealPatch prim) wX) Source
mergeUnravelled is used when converting from Darcs V1 patches (Mergers)
 to Darcs V2 patches (Conflictors).