| 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 | |