Copyright | © 2021-2023 IOHK 2024 Cardano Foundation |
---|---|
License | Apache-2.0 |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Data.Delta.Core
Description
Documentation
class Delta delta where Source #
Type class for delta types.
Associated Types
type Base delta :: Type Source #
Base type for which delta
represents a delta.
This is implemented as a type family, so that we can have
multiple delta types for the same base type.
Methods
Instances
Delta (Endo a) Source # |
|
Delta delta => Delta (NonEmpty delta) Source # | For convenience, a nonempty list of deltas can be applied like a list of deltas. Remember that deltas are applied right-to-left. |
Delta (NoChange a) Source # | apply NoChange a = a |
Delta (Replace a) Source # | apply (Replace a) _ = a |
Delta (DeltaList a) Source # | apply (Append xs) ys = xs ++ ys |
Ord a => Delta (DeltaSet a) Source # | |
Ord a => Delta (DeltaSet1 a) Source # | |
Delta delta => Delta (Maybe delta) Source # | A delta can be optionally applied. |
Delta delta => Delta [delta] Source # | A list of deltas can be applied like a single delta.
This overloading of Order is important: The apply [] = id apply (d1 ++ d2) = apply d1 . apply d2 |
(Ord key, Delta da) => Delta (DeltaMap key da) Source # | |
(Delta d1, Delta d2) => Delta (d1, d2) Source # | A pair of deltas represents a delta for a pair. |
(Delta d1, Delta d2, Delta d3) => Delta (d1, d2, d3) Source # | A triple of deltas represents a delta for a triple. |
(Delta d1, Delta d2, Delta d3, Delta d4) => Delta (d1, d2, d3, d4) Source # | A 4-tuple of deltas represents a delta for a 4-tuple. |
data NoChange (a :: Type) Source #
The least general delta, where nothing is changed.
Constructors
NoChange |
Instances
Show (NoChange a) Source # | |
Delta (NoChange a) Source # | apply NoChange a = a |
Eq (NoChange a) Source # | |
Ord (NoChange a) Source # | |
type Base (NoChange a) Source # | |
Defined in Data.Delta.Core |
Trivial delta type for the type a
that replaces the value wholesale.
Constructors
Replace a |
Instances
Semigroup (Replace a) Source # | Combine replacements. The first argument takes precedence.
Hence, apply (Replace a <> Replace b) = apply (Replace a) . apply (Replace b) More strongly, we have apply (Replace a <> _) = apply (Replace a) |
Show a => Show (Replace a) Source # | |
Delta (Replace a) Source # | apply (Replace a) _ = a |
Eq a => Eq (Replace a) Source # | |
Ord a => Ord (Replace a) Source # | |
type Base (Replace a) Source # | |
Defined in Data.Delta.Core |