disjoint-containers 0.2.4 → 0.3.0
raw patch · 4 files changed
+6/−33 lines, 4 filesdep −aesondep ~quickcheck-classesdep ~transformersPVP ok
version bump matches the API change (PVP)
Dependencies removed: aeson
Dependency ranges changed: quickcheck-classes, transformers
API changes (from Hackage documentation)
- Data.DisjointMap: instance (Data.Aeson.Types.FromJSON.FromJSON k, Data.Aeson.Types.FromJSON.FromJSON v, GHC.Classes.Ord k) => Data.Aeson.Types.FromJSON.FromJSON (Data.DisjointMap.DisjointMap k v)
- Data.DisjointMap: instance (Data.Aeson.Types.ToJSON.ToJSON k, Data.Aeson.Types.ToJSON.ToJSON v) => Data.Aeson.Types.ToJSON.ToJSON (Data.DisjointMap.DisjointMap k v)
- Data.DisjointSet: instance (GHC.Classes.Ord a, Data.Aeson.Types.FromJSON.FromJSON a) => Data.Aeson.Types.FromJSON.FromJSON (Data.DisjointSet.DisjointSet a)
- Data.DisjointSet: instance Data.Aeson.Types.ToJSON.ToJSON a => Data.Aeson.Types.ToJSON.ToJSON (Data.DisjointSet.DisjointSet a)
Files
- disjoint-containers.cabal +3/−5
- src/Data/DisjointMap.hs +1/−11
- src/Data/DisjointSet.hs +0/−11
- test/Spec.hs +2/−6
disjoint-containers.cabal view
@@ -1,5 +1,5 @@ name: disjoint-containers-version: 0.2.4+version: 0.3.0 synopsis: Disjoint containers description: Disjoint containers homepage: https://github.com/andrewthad/disjoint-containers#readme@@ -20,9 +20,8 @@ Data.DisjointMap build-depends: base >= 4.11.1 && < 5- , transformers >= 0.5 && < 0.6+ , transformers >= 0.5 && < 0.7 , containers >= 0.5 && < 0.7- , aeson >= 0.11 && < 1.5 default-language: Haskell2010 test-suite test@@ -34,12 +33,11 @@ , disjoint-containers , containers , QuickCheck >= 2.11- , quickcheck-classes >= 0.4.14.1+ , quickcheck-classes >= 0.5 , tasty , tasty-quickcheck , enum-types , quickcheck-enum-instances- , aeson , semigroups default-language: Haskell2010
src/Data/DisjointMap.hs view
@@ -57,7 +57,6 @@ import Data.Bifunctor (first) import Data.Foldable (Foldable) import Data.Maybe (fromMaybe)-import Data.Aeson (ToJSON(..),FromJSON(..)) import Data.Foldable (foldlM) import qualified Data.Semigroup as SG import qualified Data.Map.Strict as M@@ -96,16 +95,6 @@ instance (Show k, Ord k, Show v) => Show (DisjointMap k v) where show = showDisjointSet -instance (ToJSON k, ToJSON v) => ToJSON (DisjointMap k v) where- toJSON = toJSON . toSets--instance (FromJSON k, FromJSON v, Ord k) => FromJSON (DisjointMap k v) where- parseJSON x = do- theSets <- parseJSON x- case fromSets theSets of- Nothing -> fail "the sets comprising the DisjointSet were not distinct"- Just s -> return s- fromSets :: Ord k => [(Set k,v)] -> Maybe (DisjointMap k v) fromSets xs = case unionDistinctAll (map fst xs) of Nothing -> Nothing@@ -395,6 +384,7 @@ >>> import Data.Function ((&)) >>> data Rating = Lowest | Low | Medium | High | Highest deriving (Eq,Ord,Show)+>>> instance Semigroup Rating where (<>) = min >>> instance Monoid Rating where mempty = Highest; mappend = min Notice that the 'Monoid' instance combines ratings by choosing
src/Data/DisjointSet.hs view
@@ -56,7 +56,6 @@ import Data.Set (Set) import Data.Semigroup (Semigroup) import Data.Maybe (fromMaybe)-import Data.Aeson (ToJSON(..),FromJSON(..)) import Data.Foldable (foldlM) import qualified Data.Semigroup import qualified Data.Map.Strict as M@@ -77,16 +76,6 @@ showInternal :: Show a => DisjointSet a -> String showInternal (DisjointSet p r) = show (RevealDisjointSet p r)--instance ToJSON a => ToJSON (DisjointSet a) where- toJSON = toJSON . toSets--instance (Ord a, FromJSON a) => FromJSON (DisjointSet a) where- parseJSON x = do- theSets <- parseJSON x- case fromSets theSets of- Nothing -> fail "the sets comprising the DisjointSet were not distinct"- Just s -> return s fromSets :: Ord a => [Set a] -> Maybe (DisjointSet a) fromSets xs = case unionDistinctAll xs of
test/Spec.hs view
@@ -2,7 +2,6 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} -import Data.Aeson (ToJSON,FromJSON) import Data.Bifunctor (first) import Data.DisjointMap (DisjointMap) import Data.DisjointSet (DisjointSet)@@ -15,7 +14,7 @@ import Data.Set (Set) import Data.Word import Test.QuickCheck-import Test.QuickCheck.Classes (jsonLaws,Laws(..))+import Test.QuickCheck.Classes (Laws(..)) import Test.Tasty (TestTree,defaultMain,testGroup) import qualified Data.DisjointMap as DM@@ -38,8 +37,6 @@ ] , TQC.testProperty "singletons" propSingletons , TQC.testProperty "equivalences" propEquivalances- , lawsToTest (QCC.jsonLaws (Proxy :: Proxy (DisjointSet Word8)))- , lawsToTest (QCC.jsonLaws (Proxy :: Proxy (DisjointSet Word8))) , lawsToTest (QCC.monoidLaws (Proxy :: Proxy (DisjointSet Integer))) , lawsToTest (QCC.commutativeMonoidLaws (Proxy :: Proxy (DisjointSet Integer))) ]@@ -50,7 +47,6 @@ , TQC.testProperty "extra" propMapInsertUnionOrder ] , TQC.testProperty "insert" propMapInsertOrder- , lawsToTest (QCC.jsonLaws (Proxy :: Proxy (DisjointMap Word8 WrapWord8))) , lawsToTest (QCC.monoidLaws (Proxy :: Proxy (DisjointMap Word8 G))) , lawsToTest (QCC.commutativeMonoidLaws (Proxy :: Proxy (DisjointMap Word8 G))) ]@@ -171,7 +167,7 @@ shrink = mapMaybe DM.fromSets . shrink . DM.toSets newtype WrapWord8 = WrapWord8 Word8- deriving (FromJSON,ToJSON,Show,Eq,Arbitrary,Ord)+ deriving (Show,Eq,Arbitrary,Ord) instance Semigroup WrapWord8 where WrapWord8 a <> WrapWord8 b = WrapWord8 (a + b)