Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Unison.Merge
Contents
Synopsis
- data Mergeblob0 libdep = Mergeblob0 {
- defns :: ThreeWay (Defns (BiMultimap Referent Name) (BiMultimap TypeReference Name))
- libdeps :: ThreeWay (Map NameSegment libdep)
- nametrees :: ThreeWay (Nametree (DefnsF (Map NameSegment) Referent TypeReference))
- makeMergeblob0 :: ThreeWay (Nametree (DefnsF (Map NameSegment) Referent TypeReference)) -> ThreeWay (Map NameSegment libdep) -> Mergeblob0 libdep
- data Mergeblob1 libdep = Mergeblob1 {
- conflicts :: TwoWay (DefnsF (Map Name) TermReference TypeReference)
- declNameLookups :: TwoWay DeclNameLookup
- defns :: ThreeWay (Defns (BiMultimap Referent Name) (BiMultimap TypeReference Name))
- diff :: DefnsF2 (Map Name) CombinedDiffOp Referent TypeReference
- diffsFromLCA :: TwoWay (DefnsF3 (Map Name) DiffOp Synhashed Referent TypeReference)
- humanDiffsFromLCA :: TwoWay (DefnsF2 (Map Name) HumanDiffOp Referent TypeReference)
- hydratedDefns :: ThreeWay (DefnsF (Map Name) (TermReferenceId, (Term Symbol Ann, Type Symbol Ann)) (TypeReferenceId, Decl Symbol Ann))
- lcaDeclNameLookup :: PartialDeclNameLookup
- lcaLibdeps :: Map NameSegment libdep
- libdeps :: Map NameSegment libdep
- libdepsDiffs :: TwoWay (Map NameSegment (DiffOp libdep))
- renames :: TwoWay (DefnsF List Rename Rename)
- simpleRenames :: TwoWay (Defns SimpleRenames SimpleRenames)
- unconflicts :: DefnsF Unconflicts Referent TypeReference
- makeMergeblob1 :: forall libdep. Eq libdep => Mergeblob0 libdep -> ThreeWay Names -> ThreeWay (DefnsF (Map Name) (TermReferenceId, (Term Symbol Ann, Type Symbol Ann)) (TypeReferenceId, Decl Symbol Ann)) -> Either (EitherWay IncoherentDeclReason) (Mergeblob1 libdep)
- data Mergeblob2 libdep = Mergeblob2 {
- conflicts :: TwoWay (DefnsF (Map Name) TermReferenceId TypeReferenceId)
- coreDependencies :: TwoWay (DefnsF Set TermReference TypeReference)
- declNameLookups :: TwoWay DeclNameLookup
- defns :: ThreeWay (Defns (BiMultimap Referent Name) (BiMultimap TypeReference Name))
- hasConflicts :: Bool
- hydratedDefns :: ThreeWay (DefnsF (Map Name) (TermReferenceId, (Term Symbol Ann, Type Symbol Ann)) (TypeReferenceId, Decl Symbol Ann))
- lcaDeclNameLookup :: PartialDeclNameLookup
- lcaLibdeps :: Map NameSegment libdep
- libdeps :: Map NameSegment libdep
- unconflicts :: DefnsF Unconflicts Referent TypeReference
- data Mergeblob2Error
- makeMergeblob2 :: Mergeblob1 libdep -> Either Mergeblob2Error (Mergeblob2 libdep)
- data Mergeblob3 = Mergeblob3 {}
- makeMergeblob3 :: Mergeblob2 libdep -> TwoWay (DefnsF Set TermReferenceId TypeReferenceId) -> Names -> Names -> TwoWay Text -> Mergeblob3
- data Mergeblob4 = Mergeblob4 {}
- makeMergeblob4 :: Mergeblob3 -> Either (Err Symbol) Mergeblob4
- data Mergeblob5 = Mergeblob5 {}
- makeMergeblob5 :: Mergeblob4 -> TypeLookup Symbol Ann -> Either (Seq (Note Symbol Ann)) Mergeblob5
- data CombinedDiffOp a
- = CombinedDiffOp'Add !(EitherWayI a)
- | CombinedDiffOp'Delete !(EitherWayI a)
- | CombinedDiffOp'Update !(EitherWayI (Updated a))
- | CombinedDiffOp'Conflict !(TwoWay a)
- data DiffOp a
- = DiffOp'Add !a
- | DiffOp'Delete !a
- | DiffOp'Update !(Updated a)
- data EitherWay a
- data EitherWayI a
- = OnlyAlice a
- | OnlyBob a
- | AliceAndBob a
- data HumanDiffOp ref
- = HumanDiffOp'Add !ref
- | HumanDiffOp'Delete !ref
- | HumanDiffOp'Update !(Updated ref)
- | HumanDiffOp'PropagatedUpdate !(Updated ref)
- | HumanDiffOp'AliasOf !ref !(NESet Name)
- | HumanDiffOp'RenamedFrom !ref !(NESet Name)
- | HumanDiffOp'RenamedTo !ref !(NESet Name)
- data LibdepDiffOp a
- = AddLibdep !a
- | AddBothLibdeps !a !a
- | DeleteLibdep
- data Rename = Rename {}
- data SimpleRenames = SimpleRenames {}
- data Synhashed a = Synhashed {}
- data ThreeWay a = ThreeWay {}
- data TwoOrThreeWay a = TwoOrThreeWay {}
- data TwoWay a = TwoWay {}
- data TwoWayI a = TwoWayI {}
- data Unconflicts v = Unconflicts {}
- data Updated a = Updated {}
Documentation
data Mergeblob0 libdep Source #
Constructors
Mergeblob0 | |
Fields
|
makeMergeblob0 :: ThreeWay (Nametree (DefnsF (Map NameSegment) Referent TypeReference)) -> ThreeWay (Map NameSegment libdep) -> Mergeblob0 libdep Source #
data Mergeblob1 libdep Source #
Constructors
Mergeblob1 | |
Fields
|
makeMergeblob1 :: forall libdep. Eq libdep => Mergeblob0 libdep -> ThreeWay Names -> ThreeWay (DefnsF (Map Name) (TermReferenceId, (Term Symbol Ann, Type Symbol Ann)) (TypeReferenceId, Decl Symbol Ann)) -> Either (EitherWay IncoherentDeclReason) (Mergeblob1 libdep) Source #
data Mergeblob2 libdep Source #
Constructors
Mergeblob2 | |
Fields
|
data Mergeblob2Error Source #
makeMergeblob2 :: Mergeblob1 libdep -> Either Mergeblob2Error (Mergeblob2 libdep) Source #
data Mergeblob3 Source #
Constructors
Mergeblob3 | |
Fields
|
makeMergeblob3 :: Mergeblob2 libdep -> TwoWay (DefnsF Set TermReferenceId TypeReferenceId) -> Names -> Names -> TwoWay Text -> Mergeblob3 Source #
data Mergeblob4 Source #
Constructors
Mergeblob4 | |
Fields |
makeMergeblob4 :: Mergeblob3 -> Either (Err Symbol) Mergeblob4 Source #
data Mergeblob5 Source #
Constructors
Mergeblob5 | |
Fields |
makeMergeblob5 :: Mergeblob4 -> TypeLookup Symbol Ann -> Either (Seq (Note Symbol Ann)) Mergeblob5 Source #
Types
data CombinedDiffOp a Source #
The combined result of two diffs on the same thing.
Constructors
CombinedDiffOp'Add !(EitherWayI a) | |
CombinedDiffOp'Delete !(EitherWayI a) | |
CombinedDiffOp'Update !(EitherWayI (Updated a)) | |
CombinedDiffOp'Conflict !(TwoWay a) |
Instances
Functor CombinedDiffOp Source # | |
Defined in Unison.Merge.CombineDiffs Methods fmap :: (a -> b) -> CombinedDiffOp a -> CombinedDiffOp b # (<$) :: a -> CombinedDiffOp b -> CombinedDiffOp a # | |
Show a => Show (CombinedDiffOp a) Source # | |
Defined in Unison.Merge.CombineDiffs Methods showsPrec :: Int -> CombinedDiffOp a -> ShowS # show :: CombinedDiffOp a -> String # showList :: [CombinedDiffOp a] -> ShowS # |
A diff operation is one of:
- An add (where nothing was)
- A delete (of the thing that was)
- An update (from old to new)
Constructors
DiffOp'Add !a | |
DiffOp'Delete !a | |
DiffOp'Update !(Updated a) |
Instances
Foldable DiffOp Source # | |
Defined in Unison.Merge.DiffOp Methods fold :: Monoid m => DiffOp m -> m # foldMap :: Monoid m => (a -> m) -> DiffOp a -> m # foldMap' :: Monoid m => (a -> m) -> DiffOp a -> m # foldr :: (a -> b -> b) -> b -> DiffOp a -> b # foldr' :: (a -> b -> b) -> b -> DiffOp a -> b # foldl :: (b -> a -> b) -> b -> DiffOp a -> b # foldl' :: (b -> a -> b) -> b -> DiffOp a -> b # foldr1 :: (a -> a -> a) -> DiffOp a -> a # foldl1 :: (a -> a -> a) -> DiffOp a -> a # elem :: Eq a => a -> DiffOp a -> Bool # maximum :: Ord a => DiffOp a -> a # minimum :: Ord a => DiffOp a -> a # | |
Traversable DiffOp Source # | |
Functor DiffOp Source # | |
Show a => Show (DiffOp a) Source # | |
Alice exclusive-or Bob?
data EitherWayI a Source #
Alice inclusive-or Bob?
Constructors
OnlyAlice a | |
OnlyBob a | |
AliceAndBob a |
Instances
Functor EitherWayI Source # | |
Defined in Unison.Merge.EitherWayI Methods fmap :: (a -> b) -> EitherWayI a -> EitherWayI b # (<$) :: a -> EitherWayI b -> EitherWayI a # | |
Show a => Show (EitherWayI a) Source # | |
Defined in Unison.Merge.EitherWayI Methods showsPrec :: Int -> EitherWayI a -> ShowS # show :: EitherWayI a -> String # showList :: [EitherWayI a] -> ShowS # |
data HumanDiffOp ref Source #
A diff operation is one of:
- An add (where nothing was)
- A delete (of the thing that was)
- An update (from old to new)
- A propagated update (from old to new)
- An alias of some definition(s) on the other side
- A rename from some definition(s) on the other side
Constructors
HumanDiffOp'Add !ref | |
HumanDiffOp'Delete !ref | |
HumanDiffOp'Update !(Updated ref) | |
HumanDiffOp'PropagatedUpdate !(Updated ref) | |
HumanDiffOp'AliasOf !ref !(NESet Name) | |
HumanDiffOp'RenamedFrom !ref !(NESet Name) | |
HumanDiffOp'RenamedTo !ref !(NESet Name) |
Instances
Show ref => Show (HumanDiffOp ref) Source # | |
Defined in Unison.Merge.HumanDiffOp Methods showsPrec :: Int -> HumanDiffOp ref -> ShowS # show :: HumanDiffOp ref -> String # showList :: [HumanDiffOp ref] -> ShowS # |
data LibdepDiffOp a Source #
Constructors
AddLibdep !a | |
AddBothLibdeps !a !a | |
DeleteLibdep |
A "rename" is a venn partition of two non-empty sets of names: both set differences and the set intersection.
Invariant: the sets are all disjoint Invariant: it is not the case that adds and deletes are both empty
data SimpleRenames Source #
A "simple" rename is one that moves one name to another, where neither the before- nor after-name have any aliases.
A small utility type that represents a syntactic-hashed thing.
Instances
Functor Synhashed Source # | |
Generic (Synhashed a) Source # | |
Show a => Show (Synhashed a) Source # | |
Eq (Synhashed a) Source # | |
Ord (Synhashed a) Source # | |
Defined in Unison.Merge.Synhashed | |
type Rep (Synhashed a) Source # | |
Defined in Unison.Merge.Synhashed type Rep (Synhashed a) = D1 ('MetaData "Synhashed" "Unison.Merge.Synhashed" "unison-merge-0.0.0-diTL8yeB4h1dlJ26c7Frh" 'False) (C1 ('MetaCons "Synhashed" 'PrefixI 'True) (S1 ('MetaSel ('Just "hash") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Hash) :*: S1 ('MetaSel ('Just "value") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a))) |
Instances
data TwoOrThreeWay a Source #
Constructors
TwoOrThreeWay | |
Instances
Instances
"Two-way inclusive".
Instances
data Unconflicts v Source #
Constructors
Unconflicts | |
Instances
An updated thing.
Instances
Foldable Updated Source # | |
Defined in Unison.Merge.Updated Methods fold :: Monoid m => Updated m -> m # foldMap :: Monoid m => (a -> m) -> Updated a -> m # foldMap' :: Monoid m => (a -> m) -> Updated a -> m # foldr :: (a -> b -> b) -> b -> Updated a -> b # foldr' :: (a -> b -> b) -> b -> Updated a -> b # foldl :: (b -> a -> b) -> b -> Updated a -> b # foldl' :: (b -> a -> b) -> b -> Updated a -> b # foldr1 :: (a -> a -> a) -> Updated a -> a # foldl1 :: (a -> a -> a) -> Updated a -> a # elem :: Eq a => a -> Updated a -> Bool # maximum :: Ord a => Updated a -> a # minimum :: Ord a => Updated a -> a # | |
Traversable Updated Source # | |
Functor Updated Source # | |
Generic (Updated a) Source # | |
Show a => Show (Updated a) Source # | |
type Rep (Updated a) Source # | |
Defined in Unison.Merge.Updated type Rep (Updated a) = D1 ('MetaData "Updated" "Unison.Merge.Updated" "unison-merge-0.0.0-diTL8yeB4h1dlJ26c7Frh" 'False) (C1 ('MetaCons "Updated" 'PrefixI 'True) (S1 ('MetaSel ('Just "old") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: S1 ('MetaSel ('Just "new") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) |