incremental 0.3 → 0.3.1
raw patch · 3 files changed
+17/−4 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Data.Incremental: instance (Data.Incremental.Incremental a, GHC.Base.Monoid d, d GHC.Types.~ Data.Incremental.Delta a) => GHC.Base.Monoid (Data.Incremental.Alter a d)
- Data.Incremental: instance (Data.Incremental.Incremental a, d GHC.Types.~ Data.Incremental.Delta a, GHC.Base.Semigroup d) => GHC.Base.Semigroup (Data.Incremental.Alter a d)
+ Data.Incremental: WrapDelta :: Maybe (Delta (h x)) -> WrapDelta h x
+ Data.Incremental: [unwrapDelta] :: WrapDelta h x -> Maybe (Delta (h x))
+ Data.Incremental: instance (Data.Incremental.Incremental a, GHC.Base.Monoid d, d Data.Type.Equality.~ Data.Incremental.Delta a) => GHC.Base.Monoid (Data.Incremental.Alter a d)
+ Data.Incremental: instance (Data.Incremental.Incremental a, d Data.Type.Equality.~ Data.Incremental.Delta a, GHC.Base.Semigroup d) => GHC.Base.Semigroup (Data.Incremental.Alter a d)
+ Data.Incremental: instance (GHC.Classes.Eq a, GHC.Classes.Eq d) => GHC.Classes.Eq (Data.Incremental.Alter a d)
+ Data.Incremental: instance (GHC.Classes.Ord a, GHC.Classes.Ord d) => GHC.Classes.Ord (Data.Incremental.Alter a d)
+ Data.Incremental: instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Data.Incremental.Fresh a)
+ Data.Incremental: instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Data.Incremental.Hetero a)
+ Data.Incremental: instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Data.Incremental.Fresh a)
+ Data.Incremental: instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Data.Incremental.Hetero a)
+ Data.Incremental: instance forall k (h :: k -> *) (x :: k). Data.Aeson.Types.FromJSON.FromJSON (Data.Incremental.Delta (h x)) => Data.Aeson.Types.FromJSON.FromJSON (Data.Incremental.WrapDelta h x)
+ Data.Incremental: instance forall k (h :: k -> *) (x :: k). Data.Aeson.Types.ToJSON.ToJSON (Data.Incremental.Delta (h x)) => Data.Aeson.Types.ToJSON.ToJSON (Data.Incremental.WrapDelta h x)
+ Data.Incremental: instance forall k (h :: k -> *) (x :: k). GHC.Classes.Eq (Data.Incremental.Delta (h x)) => GHC.Classes.Eq (Data.Incremental.WrapDelta h x)
+ Data.Incremental: instance forall k (h :: k -> *) (x :: k). GHC.Classes.Ord (Data.Incremental.Delta (h x)) => GHC.Classes.Ord (Data.Incremental.WrapDelta h x)
+ Data.Incremental: instance forall k (h :: k -> *) (x :: k). GHC.Show.Show (Data.Incremental.Delta (h x)) => GHC.Show.Show (Data.Incremental.WrapDelta h x)
+ Data.Incremental: newtype WrapDelta h x
Files
- CHANGELOG.md +3/−0
- incremental.cabal +1/−1
- src/Data/Incremental.hs +13/−3
CHANGELOG.md view
@@ -1,6 +1,9 @@ incremental ==== +* Added `Eq`, `Ord` instances to `Alter`+* Added `WrapDelta`+ 0.3 ----
incremental.cabal view
@@ -1,5 +1,5 @@ name: incremental-version: 0.3+version: 0.3.1 synopsis: incremental update library description: Generic interface for incremental updates homepage: https://github.com/fumieval/incremental#readme
src/Data/Incremental.hs view
@@ -17,6 +17,7 @@ , Alter(..) , Hetero(..) , Fresh(..)+ , WrapDelta(..) ) where import Control.Applicative@@ -75,7 +76,7 @@ | Delete a -- ^ last value | Delete_ | Upsert a d- deriving (Generic, Functor)+ deriving (Generic, Functor, Eq, Ord) deriving instance (Show a, Show d) => Show (Alter a d) instance (NFData a, NFData d) => NFData (Alter a d)@@ -174,7 +175,7 @@ newtype Hetero a = Hetero { getHetero :: a } deriving (Bounded, Enum, Eq, Floating, Fractional, Integral, Semigroup- , Monoid, Num, Ord, Real, RealFrac, RealFloat, Generic, NFData)+ , Monoid, Num, Ord, Real, RealFrac, RealFloat, Generic, NFData, J.FromJSON, J.ToJSON) -- | 'diff' checks equality instance Eq a => Incremental (Hetero a) where@@ -186,7 +187,7 @@ newtype Fresh a = Fresh { getFresh :: a } deriving (Bounded, Enum, Eq, Floating, Fractional, Integral, Semigroup- , Monoid, Num, Ord, Real, RealFrac, RealFloat, Generic, NFData)+ , Monoid, Num, Ord, Real, RealFrac, RealFloat, Generic, NFData, J.FromJSON, J.ToJSON) -- | Always updated instance Incremental (Fresh a) where@@ -199,6 +200,15 @@ patch _ x = x; \ diff a b = if a /= b then Just b else Nothing; \ }++-- | Wrap the result of 'diff'. Useful in combination with HKD+newtype WrapDelta h x = WrapDelta {unwrapDelta :: Maybe (Delta (h x))}++deriving instance Show (Delta (h x)) => Show (WrapDelta h x)+deriving instance Eq (Delta (h x)) => Eq (WrapDelta h x)+deriving instance Ord (Delta (h x)) => Ord (WrapDelta h x)+deriving instance J.FromJSON (Delta (h x)) => J.FromJSON (WrapDelta h x)+deriving instance J.ToJSON (Delta (h x)) => J.ToJSON (WrapDelta h x) TRIVIAL_EQ(Bool) TRIVIAL_EQ(Char)