patch 0.0.8.2 → 0.0.8.3
raw patch · 8 files changed
+127/−100 lines, 8 filesdep ~HUnitdep ~basedep ~base-orphans
Dependency ranges changed: HUnit, base, base-orphans, commutative-semigroups, containers, hedgehog, lens, witherable
Files
- ChangeLog.md +7/−0
- README.md +1/−1
- patch.cabal +105/−96
- src/Data/Patch.hs +8/−2
- src/Data/Patch/IntMap.hs +1/−0
- src/Data/Patch/Map.hs +1/−0
- src/Data/Patch/MapWithMove.hs +1/−0
- src/Data/Patch/MapWithPatchingMove.hs +3/−1
ChangeLog.md view
@@ -1,5 +1,12 @@ # Revision history for patch +## 0.0.8.3++* Add support for GHC 9.8 and 9.10++* Replace partial `Map.lookup` with proper custom error for internal error.+ (This would make debugging a bug in the implementation easier.)+ ## 0.0.8.2 * Add support for GHC 9.6
README.md view
@@ -1,6 +1,6 @@ # patch -[](https://haskell.org) [](https://hackage.haskell.org/package/patch) [](https://matrix.hackage.haskell.org/#/package/patch) [](https://travis-ci.org/reflex-frp/patch) [](https://github.com/reflex-frp/patch/LICENSE)+[](https://haskell.org) [](https://hackage.haskell.org/package/patch) [](https://github.com/reflex-frp/patch/LICENSE) Data structures for describing changes to other data structures.
patch.cabal view
@@ -1,114 +1,123 @@-Name: patch-Version: 0.0.8.2-Synopsis: Data structures for describing changes to other data structures.-Description:- Data structures for describing changes to other data structures.- .- In this library, a patch is something which can be applied, analogous to a- function, and which distinguishes returning the argument it was provided from- returning something else.-License: BSD3-License-file: LICENSE-Author: Ryan Trinkle-Maintainer: maintainer@obsidian.systems-Stability: Experimental-Category: FRP-Build-type: Simple-Cabal-version: >=1.10-homepage: https://obsidian.systems-bug-reports: https://github.com/reflex-frp/patch/issues+cabal-version: >=1.10+name: patch+version: 0.0.8.3+license: BSD3+license-file: LICENSE+maintainer: maintainer@obsidian.systems+author: Ryan Trinkle+stability: Experimental+tested-with:+ ghc ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.1 || ==9.2.5 || ==9.4.5 || ==9.6.1 || ==9.8.2 || ==9.10.1+ ghcjs ==8.6 || ==8.10++homepage: https://obsidian.systems+bug-reports: https://github.com/reflex-frp/patch/issues+synopsis:+ Data structures for describing changes to other data structures.++description:+ Data structures for describing changes to other data structures.+ .+ In this library, a patch is something which can be applied, analogous to a+ function, and which distinguishes returning the argument it was provided from+ returning something else.++category: FRP+build-type: Simple extra-source-files:- README.md- ChangeLog.md+ README.md+ ChangeLog.md -tested-with:- GHC ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.1 || ==9.2.5 || ==9.4.5 || ==9.6.1- GHCJS ==8.6 || ==8.10+source-repository head+ type: git+ location: https://github.com/reflex-frp/patch flag split-these- description: Use split these/semialign packages- manual: False- default: True+ description: Use split these/semialign packages flag hlint- description: Enable hlint test- default: True+ description: Enable hlint test library- hs-source-dirs: src- default-language: Haskell2010- build-depends: base >= 4.9 && < 4.19- , constraints-extras >= 0.3 && < 0.5- , commutative-semigroups >= 0.0 && < 0.2- , containers >= 0.6 && < 0.7- , dependent-map >= 0.3 && < 0.5- , dependent-sum >= 0.6 && < 0.8- , lens >= 4.7 && < 5.3- , indexed-traversable >= 0.1 && < 0.2- , semigroupoids >= 4.0 && < 7- , transformers >= 0.5.6.0 && < 0.7- , witherable >= 0.3 && < 0.5+ exposed-modules:+ Data.Functor.Misc+ Data.Monoid.DecidablyEmpty+ Data.Patch+ Data.Patch.Class+ Data.Patch.DMap+ Data.Patch.DMapWithMove+ Data.Patch.IntMap+ Data.Patch.Map+ Data.Patch.MapWithMove+ Data.Patch.MapWithPatchingMove+ Data.Patch.PatchOrReplacement+ Data.Semigroup.Additive - if impl(ghc < 8.6)- build-depends: base-orphans >= 0.8 && < 0.9+ hs-source-dirs: src+ default-language: Haskell2010+ default-extensions: PolyKinds+ ghc-options: -Wall -fwarn-redundant-constraints -fwarn-tabs+ build-depends:+ base >=4.9 && <=4.21,+ constraints-extras >=0.3 && <0.5,+ commutative-semigroups >=0.0 && <0.3,+ containers >=0.6 && <0.8,+ dependent-map >=0.3 && <0.5,+ dependent-sum >=0.6 && <0.8,+ lens >=4.7 && <5.4,+ indexed-traversable >=0.1 && <0.2,+ semigroupoids >=4.0 && <7,+ transformers >=0.5.6.0 && <0.7,+ witherable >=0.3 && <0.6 - exposed-modules: Data.Functor.Misc- , Data.Monoid.DecidablyEmpty- , Data.Patch- , Data.Patch.Class- , Data.Patch.DMap- , Data.Patch.DMapWithMove- , Data.Patch.IntMap- , Data.Patch.Map- , Data.Patch.MapWithMove- , Data.Patch.MapWithPatchingMove- , Data.Patch.PatchOrReplacement- , Data.Semigroup.Additive+ if impl(ghc <8.6)+ build-depends: base-orphans >=0.8 && <0.10 - ghc-options: -Wall -fwarn-redundant-constraints -fwarn-tabs- default-extensions: PolyKinds+ if flag(split-these)+ build-depends:+ these >=1 && <1.3,+ semialign >=1 && <1.4,+ monoidal-containers >=0.6 && <0.7 - if flag(split-these)- build-depends: these >= 1 && <1.3- , semialign >=1 && <1.4- , monoidal-containers >= 0.6 && < 0.7- else- build-depends: these >= 0.4 && <0.9- , monoidal-containers == 0.4.0.0+ else+ build-depends:+ these >=0.4 && <0.9,+ monoidal-containers ==0.4.0.0 test-suite tests- default-language: Haskell2010- type: exitcode-stdio-1.0- main-is: tests.hs- hs-source-dirs: test- build-depends: base- , patch- , containers- , hedgehog- , HUnit- if impl(ghcjs)- buildable: False+ type: exitcode-stdio-1.0+ main-is: tests.hs+ hs-source-dirs: test+ default-language: Haskell2010+ build-depends:+ base,+ patch,+ containers,+ hedgehog <1.6,+ HUnit <1.7 + if (impl(ghcjs >=0) || arch(javascript))+ buildable: False+ test-suite hlint- -- hlint doesn't support ghc-9.6 yet (as of version 3.5)- if impl(ghc >= 9.6)- buildable: False- default-language: Haskell2010- type: exitcode-stdio-1.0- main-is: hlint.hs- hs-source-dirs: test- build-depends: base- , directory- , filepath- , filemanip- if impl(ghc < 9.2)- build-depends: hlint (< 2.1 || >= 2.2.2) && < 3.5- else- build-depends: hlint >= 3.5 && < 3.6+ type: exitcode-stdio-1.0+ main-is: hlint.hs+ hs-source-dirs: test+ default-language: Haskell2010+ build-depends:+ base,+ directory,+ filepath,+ filemanip - if impl(ghcjs) || !flag(hlint)- buildable: False+ if impl(ghc >=9.6)+ buildable: False -source-repository head- type: git- location: https://github.com/reflex-frp/patch+ if impl(ghc <9.2)+ build-depends: hlint (<2.1 || >=2.2.2) && <3.5++ else+ build-depends: hlint >=3.5 && <3.6++ if ((impl(ghcjs >=0) || arch(javascript)) || !flag(hlint))+ buildable: False
src/Data/Patch.hs view
@@ -14,16 +14,22 @@ ) where import Data.Semigroup.Commutative-import Control.Applicative (liftA2) import Data.Functor.Const (Const (..)) import Data.Functor.Identity import Data.Map.Monoidal (MonoidalMap) import Data.Proxy+import GHC.Generics++#if !MIN_VERSION_base(4,18,0)+import Control.Applicative (liftA2)+#endif+ #if !MIN_VERSION_base(4,11,0) import Data.Semigroup (Semigroup (..)) #endif-import GHC.Generics +-- N.B. Intentionally reexporting `Additive`, the deprecated alias, as+-- this is a reexport for backwards compatibility. import qualified Data.Semigroup.Additive as X import Data.Patch.Class as X import Data.Patch.DMap as X hiding (getDeletions)
src/Data/Patch/IntMap.hs view
@@ -6,6 +6,7 @@ {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-} {-| Description: Module containing 'PatchIntMap', a 'Patch' for 'IntMap'.
src/Data/Patch/Map.hs view
@@ -7,6 +7,7 @@ {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-} {-| Description: A basic 'Patch' on 'Map'
src/Data/Patch/MapWithMove.hs view
@@ -12,6 +12,7 @@ {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-} {-# LANGUAGE ViewPatterns #-} {-|
src/Data/Patch/MapWithPatchingMove.hs view
@@ -9,6 +9,7 @@ {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} {-|@@ -230,8 +231,9 @@ Just (from, to) reverseMapping = Map.fromList $ catMaybes $ zipWith f unsorted sorted g (to, _) (from, _) = if to == from then Nothing else- let Just movingTo = Map.lookup from reverseMapping+ let movingTo = fromMaybe err $ Map.lookup from reverseMapping in Just (to, NodeInfo (From_Move from mempty) $ Just movingTo)+ err = error "IMPOSSIBLE happens in patchThatSortsMapWith" -- | Create a 'PatchMapWithPatchingMove' that, if applied to the first 'Map' provided, -- will produce a 'Map' with the same values as the second 'Map' but with the