packages feed

nonempty-containers 0.3.3.0 → 0.3.4.0

raw patch · 8 files changed

+77/−8 lines, 8 filesdep +aesonPVP ok

version bump matches the API change (PVP)

Dependencies added: aeson

API changes (from Hackage documentation)

+ Data.Containers.NonEmpty: pattern IsNonEmpty :: HasNonEmpty s => NE s -> s
+ Data.Containers.NonEmpty: pattern IsEmpty :: HasNonEmpty s => s
+ Data.IntMap.NonEmpty: pattern IsEmpty :: IntMap a
+ Data.IntMap.NonEmpty: pattern IsNonEmpty :: NEIntMap a -> IntMap a
+ Data.IntMap.NonEmpty.Internal: instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Data.IntMap.NonEmpty.Internal.NEIntMap a)
+ Data.IntMap.NonEmpty.Internal: instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Data.IntMap.NonEmpty.Internal.NEIntMap a)
+ Data.IntSet.NonEmpty: pattern IsEmpty :: IntSet
+ Data.IntSet.NonEmpty: pattern IsNonEmpty :: NEIntSet -> IntSet
+ Data.IntSet.NonEmpty.Internal: instance Data.Aeson.Types.FromJSON.FromJSON Data.IntSet.NonEmpty.Internal.NEIntSet
+ Data.IntSet.NonEmpty.Internal: instance Data.Aeson.Types.ToJSON.ToJSON Data.IntSet.NonEmpty.Internal.NEIntSet
+ Data.Map.NonEmpty: pattern IsEmpty :: Map k a
+ Data.Map.NonEmpty: pattern IsNonEmpty :: NEMap k a -> Map k a
+ Data.Map.NonEmpty.Internal: instance (Data.Aeson.Types.FromJSON.FromJSONKey k, GHC.Classes.Ord k, Data.Aeson.Types.FromJSON.FromJSON a) => Data.Aeson.Types.FromJSON.FromJSON (Data.Map.NonEmpty.Internal.NEMap k a)
+ Data.Map.NonEmpty.Internal: instance (Data.Aeson.Types.ToJSON.ToJSONKey k, Data.Aeson.Types.ToJSON.ToJSON a) => Data.Aeson.Types.ToJSON.ToJSON (Data.Map.NonEmpty.Internal.NEMap k a)
+ Data.Sequence.NonEmpty: pattern (:||>) :: Seq a -> a -> NESeq a
+ Data.Sequence.NonEmpty: pattern IsEmpty :: Seq a
+ Data.Sequence.NonEmpty: pattern IsNonEmpty :: NESeq a -> Seq a
+ Data.Sequence.NonEmpty.Internal: instance Data.Aeson.Types.FromJSON.FromJSON a => Data.Aeson.Types.FromJSON.FromJSON (Data.Sequence.NonEmpty.Internal.NESeq a)
+ Data.Sequence.NonEmpty.Internal: instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Data.Sequence.NonEmpty.Internal.NESeq a)
+ Data.Sequence.NonEmpty.Internal: pattern (:||>) :: Seq a -> a -> NESeq a
+ Data.Set.NonEmpty: pattern IsEmpty :: Set a
+ Data.Set.NonEmpty: pattern IsNonEmpty :: NESet a -> Set a
+ Data.Set.NonEmpty.Internal: instance (Data.Aeson.Types.FromJSON.FromJSON a, GHC.Classes.Ord a) => Data.Aeson.Types.FromJSON.FromJSON (Data.Set.NonEmpty.Internal.NESet a)
+ Data.Set.NonEmpty.Internal: instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Data.Set.NonEmpty.Internal.NESet a)

Files

CHANGELOG.md view
@@ -1,6 +1,15 @@ Changelog ========= +Version 0.3.4.0+---------------++*August 4, 2020*++<https://github.com/mstksg/nonempty-containers/releases/tag/v0.3.4.0>++*   Add `ToJSON` and `FromJSON` instances.+ Version 0.3.3.0 --------------- 
nonempty-containers.cabal view
@@ -1,13 +1,13 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.31.2.+-- This file has been generated from package.yaml by hpack version 0.34.2. -- -- see: https://github.com/sol/hpack ----- hash: 99b2f1d8a05c4c65da0f4e80d7fe63f0bba58499425adb66fc50f03895929c56+-- hash: f7b111581e408abad55838cf6ef277f8e5f3fe117ec340c4ff529f0d7141da59  name:           nonempty-containers-version:        0.3.3.0+version:        0.3.4.0 synopsis:       Non-empty variants of containers data types, with full API description:    Efficient and optimized non-empty versions of types from /containers/.                 Inspired by /non-empty-containers/ library, except attempting a more@@ -50,9 +50,10 @@       Paths_nonempty_containers   hs-source-dirs:       src-  ghc-options: -Wall -Wcompat -Werror=incomplete-patterns -Wredundant-constraints+  ghc-options: -Wall -Wcompat -Wredundant-constraints   build-depends:-      base >=4.9 && <5+      aeson+    , base >=4.9 && <5     , comonad     , containers >=0.5.9     , deepseq@@ -75,7 +76,7 @@       Paths_nonempty_containers   hs-source-dirs:       test-  ghc-options: -Wall -Wcompat -Werror=incomplete-patterns -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N+  ghc-options: -Wall -Wcompat -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N   build-depends:       base >=4.9 && <5     , comonad
src/Data/IntMap/NonEmpty/Internal.hs view
@@ -58,6 +58,7 @@ import           Control.Applicative import           Control.Comonad import           Control.DeepSeq+import           Control.Monad import           Data.Coerce import           Data.Data import           Data.Function@@ -69,9 +70,10 @@ import           Data.Semigroup import           Data.Semigroup.Foldable    (Foldable1(fold1)) import           Data.Semigroup.Traversable (Traversable1(..))-import           Data.Typeable              (Typeable)+-- import           Data.Typeable              (Typeable) import           Prelude hiding             (foldr1, foldl1, foldr, foldl, map) import           Text.Read+import qualified Data.Aeson                 as A import qualified Data.Foldable              as F import qualified Data.IntMap                as M import qualified Data.List                  as L@@ -186,6 +188,16 @@  intMapDataType :: DataType intMapDataType = mkDataType "Data.IntMap.NonEmpty.Internal.NEIntMap" [fromListConstr]++instance A.ToJSON a => A.ToJSON (NEIntMap a) where+    toJSON     = A.toJSON . toMap+    toEncoding = A.toEncoding . toMap++instance A.FromJSON a => A.FromJSON (NEIntMap a) where+    parseJSON = withNonEmpty (fail err) pure+            <=< A.parseJSON+      where+        err = "NEIntMap: Non-empty map expected, but empty map found"  -- | /O(n)/. Fold the values in the map using the given right-associative -- binary operator, such that @'foldr' f z == 'Prelude.foldr' f z . 'elems'@.
src/Data/IntSet/NonEmpty/Internal.hs view
@@ -33,6 +33,7 @@   ) where  import           Control.DeepSeq+import           Control.Monad import           Data.Data import           Data.Function import           Data.IntSet.Internal    (IntSet(..), Key)@@ -40,6 +41,7 @@ import           Data.Semigroup import           Data.Semigroup.Foldable (Foldable1) import           Text.Read+import qualified Data.Aeson              as A import qualified Data.Foldable           as F import qualified Data.IntSet             as S import qualified Data.Semigroup.Foldable as F1@@ -130,7 +132,15 @@ intSetDataType = mkDataType "Data.IntSet.NonEmpty.Internal.NEIntSet" [fromListConstr]  +instance A.ToJSON NEIntSet where+    toJSON     = A.toJSON . toSet+    toEncoding = A.toEncoding . toSet +instance A.FromJSON NEIntSet where+    parseJSON = withNonEmpty (fail err) pure+            <=< A.parseJSON+      where+        err = "NEIntSet: Non-empty set expected, but empty set found"   -- | /O(log n)/. Smart constructor for an 'NEIntSet' from a 'IntSet'.  Returns
src/Data/Map/NonEmpty.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE BangPatterns    #-}+{-# LANGUAGE EmptyCase       #-} {-# LANGUAGE LambdaCase      #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE TupleSections   #-}@@ -2349,7 +2350,7 @@ -- -- @since 0.3.1.0 absurdNEMap :: NEMap Void a -> b-absurdNEMap (NEMap k _ _) = absurd k+absurdNEMap = \case {}  -- --------------------------- -- Combining functions
src/Data/Map/NonEmpty/Internal.hs view
@@ -53,6 +53,7 @@ import           Control.Applicative import           Control.Comonad import           Control.DeepSeq+import           Control.Monad import           Data.Coerce import           Data.Data import           Data.Function@@ -66,6 +67,7 @@ import           Data.Semigroup.Traversable (Traversable1(..)) import           Prelude hiding             (foldr1, foldl1, foldr, foldl, map) import           Text.Read+import qualified Data.Aeson                 as A import qualified Data.Foldable              as F import qualified Data.Map                   as M import qualified Data.Map.Internal          as M@@ -187,6 +189,16 @@  mapDataType :: DataType mapDataType = mkDataType "Data.Map.NonEmpty.NonEmpty.Internal.NEMap" [fromListConstr]++instance (A.ToJSONKey k, A.ToJSON a) => A.ToJSON (NEMap k a) where+    toJSON     = A.toJSON . toMap+    toEncoding = A.toEncoding . toMap++instance (A.FromJSONKey k, Ord k, A.FromJSON a) => A.FromJSON (NEMap k a) where+    parseJSON = withNonEmpty (fail err) pure+            <=< A.parseJSON+      where+        err = "NEMap: Non-empty map expected, but empty map found"  -- | /O(n)/. Fold the values in the map using the given right-associative -- binary operator, such that @'foldr' f z == 'Prelude.foldr' f z . 'elems'@.
src/Data/Sequence/NonEmpty/Internal.hs view
@@ -48,6 +48,7 @@  import           Control.Comonad import           Control.DeepSeq+import           Control.Monad import           Control.Monad.Fix import           Control.Monad.Zip import           Data.Bifunctor@@ -64,6 +65,7 @@ import           Data.Sequence              (Seq(..)) import           Prelude hiding             (length, zipWith, unzip, zip, map, replicate) import           Text.Read+import qualified Data.Aeson                 as A import qualified Data.Foldable              as F import qualified Data.Sequence              as Seq @@ -187,6 +189,18 @@  seqDataType :: DataType seqDataType = mkDataType "Data.Sequence.NonEmpty.Internal.NESeq" [consConstr]+++instance A.ToJSON a => A.ToJSON (NESeq a) where+    toJSON     = A.toJSON . toSeq+    toEncoding = A.toEncoding . toSeq++instance A.FromJSON a => A.FromJSON (NESeq a) where+    parseJSON = withNonEmpty (fail err) pure+            <=< A.parseJSON+      where+        err = "NESeq: Non-empty sequence expected, but empty sequence found"+  -- | /O(log n)/. A general continuation-based way to consume a 'Seq' as if -- it were an 'NESeq'. @'withNonEmpty' def f@ will take a 'Seq'.  If map is
src/Data/Set/NonEmpty/Internal.hs view
@@ -44,6 +44,7 @@   ) where  import           Control.DeepSeq+import           Control.Monad import           Data.Data import           Data.Function import           Data.Functor.Classes@@ -53,6 +54,7 @@ import           Data.Set.Internal       (Set(..)) import           Prelude hiding          (foldr, foldr1, foldl, foldl1) import           Text.Read+import qualified Data.Aeson              as A import qualified Data.Foldable           as F import qualified Data.Semigroup.Foldable as F1 import qualified Data.Set                as S@@ -160,7 +162,15 @@ setDataType = mkDataType "Data.Set.NonEmpty.Internal.NESet" [fromListConstr]  +instance A.ToJSON a => A.ToJSON (NESet a) where+    toJSON     = A.toJSON . toSet+    toEncoding = A.toEncoding . toSet +instance (A.FromJSON a, Ord a) => A.FromJSON (NESet a) where+    parseJSON = withNonEmpty (fail err) pure+            <=< A.parseJSON+      where+        err = "NESet: Non-empty set expected, but empty set found"   -- | /O(log n)/. Smart constructor for an 'NESet' from a 'Set'.  Returns