incremental 0.1.1 → 0.2
raw patch · 3 files changed
+23/−29 lines, 3 filesdep +bytestringdep −extensiblePVP ok
version bump matches the API change (PVP)
Dependencies added: bytestring
Dependencies removed: extensible
API changes (from Hackage documentation)
- Data.Incremental: WrapDelta :: Maybe (Delta (h x)) -> WrapDelta h x
- Data.Incremental: [unwrapDelta] :: WrapDelta h x -> Maybe (Delta (h x))
- 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: instance forall k (h :: k -> *) (xs :: [k]). Data.Extensible.Dictionary.WrapForall Data.Incremental.Incremental h xs => Data.Incremental.Incremental (xs Data.Extensible.Struct.:& h)
- Data.Incremental: instance forall k v (h :: v -> *) (kv :: Type.Membership.Internal.Assoc k v). Data.Incremental.Incremental (h (Type.Membership.TargetOf kv)) => Data.Incremental.Incremental (Data.Extensible.Field.Field h kv)
- Data.Incremental: newtype WrapDelta h x
+ Data.Incremental: instance Data.Incremental.Incremental Data.ByteString.Internal.ByteString
Files
- README.md +17/−1
- incremental.cabal +4/−4
- src/Data/Incremental.hs +2/−24
README.md view
@@ -1,1 +1,17 @@-# incremental+# incremental: incremental update interface++[](https://hackage.haskell.org/package/incremental)++[](https://discord.gg/DG93Tgs)++This package provides a typeclass for incremental updates and diffing.++```haskell+class Incremental a where+ -- | the difference type+ type Delta a+ -- | @'maybe' a ('patch' a) ('diff' b a) ≡ b@+ patch :: a -> Delta a -> a+ -- | returns 'Nothing' when there is no update+ diff :: a -> a -> Maybe (Delta a)+```
incremental.cabal view
@@ -1,5 +1,5 @@ name: incremental-version: 0.1.1+version: 0.2 synopsis: incremental update library description: Generic interface for incremental updates homepage: https://github.com/fumieval/incremental#readme@@ -7,7 +7,7 @@ license-file: LICENSE author: Fumiaki Kinoshita maintainer: fumiexcel@gmail.com-copyright: 2017 Fumiaki Kinoshita+copyright: 2020 Fumiaki Kinoshita category: Data build-type: Simple extra-source-files: README.md@@ -17,10 +17,10 @@ hs-source-dirs: src exposed-modules: Data.Incremental build-depends: base >= 4.8 && <5, containers, semigroups, deepseq- , extensible >= 0.6.1 && <0.8+ , bytestring , aeson , text- ghc-options: -Wall+ ghc-options: -Wall -Wcompat default-language: Haskell2010 test-suite incremental-test
src/Data/Incremental.hs view
@@ -17,24 +17,22 @@ , Alter(..) , Hetero(..) , Fresh(..)- , WrapDelta(..) ) where import Control.Applicative import Control.DeepSeq import qualified Data.Aeson as J+import Data.ByteString (ByteString) import Data.Fixed import Data.Functor.Identity import Data.Semigroup hiding (diff) import qualified Data.IntMap.Strict as IntMap import qualified Data.Map.Strict as Map-import Data.Maybe import Data.Proxy import qualified Data.Set as Set import Data.Void import Data.Int import Data.Word-import Data.Extensible import Data.Text (Text) import Numeric.Natural import GHC.Generics@@ -195,27 +193,6 @@ diff a b = if a /= b then Just b else Nothing; \ } -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)--deriving instance Incremental (h (TargetOf kv)) => Incremental (Field h kv)--instance WrapForall Incremental h xs => Incremental (xs :& h) where- type Delta (xs :& h) = xs :& WrapDelta h- patch r = hmapWithIndexFor (Proxy :: Proxy (Instance1 Incremental h))- (\i (WrapDelta d) -> maybe (hlookup i r) (patch (hlookup i r)) d)- diff r = check- . hmapWithIndexFor (Proxy :: Proxy (Instance1 Incremental h))- (\i x -> WrapDelta (diff (hlookup i r) x))- where- check t- | getAny $ hfoldMap (Any . isJust . unwrapDelta) t = Just t- | otherwise = Nothing- TRIVIAL_EQ(Bool) TRIVIAL_EQ(Char) TRIVIAL_EQ(Double)@@ -235,3 +212,4 @@ TRIVIAL_EQ(Word32) TRIVIAL_EQ(Word64) TRIVIAL_EQ(Text)+TRIVIAL_EQ(ByteString)