darcs-2.18.2: a distributed, interactive, smart revision control system

Safe Haskell | None
Language | Haskell2010

Darcs.Patch.Rebase.PushFixup

Synopsis

- type PushFixupFn (fixupIn :: Type -> Type -> Type) (itemIn :: Type -> Type -> Type) (itemOut :: Type -> Type -> Type) (fixupOut :: Type -> Type -> Type) = forall wX wY. (fixupIn :> itemIn) wX wY -> (itemOut :> fixupOut) wX wY
- dropFixups :: forall (item :: Type -> Type -> Type) (fixup :: Type -> Type -> Type) wX wY. (item :> fixup) wX wY -> Sealed (item wX)
- pushFixupFLFL_FLFLFL :: forall (fixup :: Type -> Type -> Type) (item :: Type -> Type -> Type). PushFixupFn fixup item (FL item) (FL fixup) -> PushFixupFn fixup (FL item) (FL item) (FL fixup)
- pushFixupFLFL_FLFLFLFL :: forall (fixup :: Type -> Type -> Type) (item :: Type -> Type -> Type). PushFixupFn fixup item (FL item) (FL fixup) -> PushFixupFn (FL fixup) (FL item) (FL item) (FL fixup)
- pushFixupFLMB_FLFLMB :: forall (fixup :: Type -> Type -> Type) (item :: Type -> Type -> Type). PushFixupFn fixup item (FL item) (Maybe2 fixup) -> PushFixupFn fixup (FL item) (FL item) (Maybe2 fixup)
- pushFixupIdFL_FLFLFL :: forall (fixup :: Type -> Type -> Type) (item :: Type -> Type -> Type). PushFixupFn fixup item item (FL fixup) -> PushFixupFn fixup (FL item) (FL item) (FL fixup)
- pushFixupIdMB_FLFLMB :: forall (fixup :: Type -> Type -> Type) (item :: Type -> Type -> Type). PushFixupFn fixup item item (Maybe2 fixup) -> PushFixupFn fixup (FL item) (FL item) (Maybe2 fixup)
- pushFixupIdMB_FLIdFLFL :: forall (fixup :: Type -> Type -> Type) (item :: Type -> Type -> Type). PushFixupFn fixup item item (Maybe2 fixup) -> PushFixupFn (FL fixup) item item (FL fixup)

# Documentation

type PushFixupFn (fixupIn :: Type -> Type -> Type) (itemIn :: Type -> Type -> Type) (itemOut :: Type -> Type -> Type) (fixupOut :: Type -> Type -> Type) = forall wX wY. (fixupIn :> itemIn) wX wY -> (itemOut :> fixupOut) wX wY #

During a rebase, we use "fixup" patches to maintain the correct context for the real "items" that are being stored in the rebase that the user wants to keep. As the context of the rebase changes, new fixups get added to the beginning that then need to be pushed past as many items as possible.

There are multiple fixup types and multiple ways of representing the items being stored in the rebase, so this is polymorphic in both types. Also, the structure of the results varies - in some cases it will be a single value, sometimes an FL, or sometimes zero or one values (Maybe2), so the output types are separate variables. A typical instantiation would be something like PushFixupFn Fixup Item (FL Item) (FL Fixup).

dropFixups :: forall (item :: Type -> Type -> Type) (fixup :: Type -> Type -> Type) wX wY. (item :> fixup) wX wY -> Sealed (item wX) #

pushFixupFLFL_FLFLFL :: forall (fixup :: Type -> Type -> Type) (item :: Type -> Type -> Type). PushFixupFn fixup item (FL item) (FL fixup) -> PushFixupFn fixup (FL item) (FL item) (FL fixup) #

pushFixupFLFL_FLFLFLFL :: forall (fixup :: Type -> Type -> Type) (item :: Type -> Type -> Type). PushFixupFn fixup item (FL item) (FL fixup) -> PushFixupFn (FL fixup) (FL item) (FL item) (FL fixup) #

pushFixupFLMB_FLFLMB :: forall (fixup :: Type -> Type -> Type) (item :: Type -> Type -> Type). PushFixupFn fixup item (FL item) (Maybe2 fixup) -> PushFixupFn fixup (FL item) (FL item) (Maybe2 fixup) #

pushFixupIdFL_FLFLFL :: forall (fixup :: Type -> Type -> Type) (item :: Type -> Type -> Type). PushFixupFn fixup item item (FL fixup) -> PushFixupFn fixup (FL item) (FL item) (FL fixup) #

pushFixupIdMB_FLFLMB :: forall (fixup :: Type -> Type -> Type) (item :: Type -> Type -> Type). PushFixupFn fixup item item (Maybe2 fixup) -> PushFixupFn fixup (FL item) (FL item) (Maybe2 fixup) #

pushFixupIdMB_FLIdFLFL :: forall (fixup :: Type -> Type -> Type) (item :: Type -> Type -> Type). PushFixupFn fixup item item (Maybe2 fixup) -> PushFixupFn (FL fixup) item item (FL fixup) #