discrimination 0.4.1 → 0.5
raw patch · 6 files changed
+23/−15 lines, 6 filesdep ~basedep ~containersdep ~deepseqPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base, containers, deepseq, ghc-bignum, hashable, integer-gmp, primitive
API changes (from Hackage documentation)
- Data.Discrimination: class Grouping a
+ Data.Discrimination: class Eq a => Grouping a
- Data.Discrimination: class Grouping1 f
+ Data.Discrimination: class Eq1 f => Grouping1 f
- Data.Discrimination: class Grouping a => Sorting a
+ Data.Discrimination: class (Grouping a, Ord a) => Sorting a
- Data.Discrimination: class Grouping1 f => Sorting1 f
+ Data.Discrimination: class (Grouping1 f, Ord1 f) => Sorting1 f
- Data.Discrimination.Grouping: class Grouping a
+ Data.Discrimination.Grouping: class Eq a => Grouping a
- Data.Discrimination.Grouping: class Grouping1 f
+ Data.Discrimination.Grouping: class Eq1 f => Grouping1 f
- Data.Discrimination.Sorting: class Grouping a => Sorting a
+ Data.Discrimination.Sorting: class (Grouping a, Ord a) => Sorting a
- Data.Discrimination.Sorting: class Grouping1 f => Sorting1 f
+ Data.Discrimination.Sorting: class (Grouping1 f, Ord1 f) => Sorting1 f
Files
- CHANGELOG.markdown +5/−0
- common/Utils.hs +1/−1
- discrimination.cabal +6/−6
- src/Data/Discrimination/Grouping.hs +7/−5
- src/Data/Discrimination/Internal.hs +1/−1
- src/Data/Discrimination/Sorting.hs +3/−2
CHANGELOG.markdown view
@@ -1,3 +1,8 @@+## 0.5 [2022-06-15]++* `Eq` is a superclass of `Grouping`, `Ord` is a superclass of `Ordering`.+* Drop support for GHC prior 8+ ## 0.4.1 [2021-01-08] * GHC-9.0 compatibility
common/Utils.hs view
@@ -50,7 +50,7 @@ | HS.member x s = go s xs | otherwise = x : go (HS.insert x s) xs - -- | Sort via vector.+-- | Sort via vector. introsort :: Ord a => [a] -> [a] introsort xs = runST $ do v <- V.unsafeThaw (V.fromList xs)
discrimination.cabal view
@@ -1,6 +1,6 @@ name: discrimination category: Data, Sorting-version: 0.4.1+version: 0.5 license: BSD3 cabal-version: >= 1.10 license-file: LICENSE@@ -11,7 +11,7 @@ bug-reports: http://github.com/ekmett/discrimination/issues copyright: Copyright (C) 2014-2015 Edward A. Kmett build-type: Simple-tested-with: GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.3+tested-with: GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.7, GHC == 9.0.2, GHC == 9.2.3, GHC == 9.4.1 synopsis: Fast generic linear-time sorting, joins and container construction. description: This package provides fast, generic, linear-time discrimination and sorting.@@ -43,21 +43,21 @@ build-depends: array >= 0.5.1.0 && < 0.6,- base >= 4.8 && < 5,+ base >= 4.9 && < 5, containers >= 0.5.6.2 && < 0.7, contravariant >= 1.5.3 && < 2, deepseq >= 1.4.1.1 && < 1.5, ghc-prim,- hashable >= 1.2.7.0 && < 1.4,+ hashable >= 1.2.7.0 && < 1.5, primitive >= 0.7.1.0 && < 0.8, promises >= 0.3 && < 0.4,- transformers >= 0.4.2.0 && < 0.6+ transformers >= 0.4.2.0 && < 0.7 if !impl(ghc >=8.0) build-depends: semigroups >= 0.18.5 && < 1 if impl(ghc >= 9.0)- build-depends: ghc-bignum >= 1.0 && < 1.1+ build-depends: ghc-bignum >= 1.0 && < 1.3 else build-depends: integer-gmp >= 1.0 && < 1.1
src/Data/Discrimination/Grouping.hs view
@@ -47,6 +47,7 @@ import Data.Word import Numeric.Natural (Natural) import Prelude hiding (read, concat, mapM_)+import Data.Functor.Classes (Eq1 (..)) -- | Productive Stable Unordered Discriminator @@ -131,7 +132,7 @@ -- -- /Note:/ 'Eq' is a moral super class of 'Grouping'. -- It isn't because of some missing instances.-class Grouping a where+class Eq a => Grouping a where -- | For every surjection @f@, -- -- @@@ -181,13 +182,14 @@ #endif grouping = divide (\r -> (numerator r, denominator r)) grouping grouping -instance (Grouping1 f, Grouping1 g, Grouping a) => Grouping (Compose f g a) where- grouping = getCompose `contramap` grouping1 (grouping1 grouping)--class Grouping1 f where+class Eq1 f => Grouping1 f where grouping1 :: Group a -> Group (f a) default grouping1 :: Deciding1 Grouping f => Group a -> Group (f a) grouping1 = deciding1 (Proxy :: Proxy Grouping) grouping++instance (Grouping1 f, Grouping1 g, Grouping a) => Grouping (Compose f g a) where+ grouping = getCompose `contramap` grouping1 (grouping1 grouping)+ instance Grouping1 [] instance Grouping1 Maybe
src/Data/Discrimination/Internal.hs view
@@ -100,7 +100,7 @@ {-# INLINE naturalCases #-} -- We need to reverse the limb array. Its stored least-significant word first--- but for comparasion to work right we need most-significant words first.+-- but for comparison to work right we need most-significant words first. #ifdef MIN_VERSION_ghc_bignum decomposeBigNat :: ByteArray# -> (Int, [Word]) decomposeBigNat ba = let pa = PrimArray ba :: PrimArray Word in (sizeofPrimArray pa, primArrayToReverseList pa)
src/Data/Discrimination/Sorting.hs view
@@ -55,6 +55,7 @@ import Data.Word import Numeric.Natural (Natural) import Prelude hiding (read, concat)+import Data.Functor.Classes (Ord1 (..)) -- $setup -- >>> import qualified Data.Map as Map@@ -112,7 +113,7 @@ -- @ -- 'sortingCompare' x y ≡ 'compare' x y -- @-class Grouping a => Sorting a where+class (Grouping a, Ord a) => Sorting a where -- | For every strictly monotone-increasing function @f@: -- -- @@@ -189,7 +190,7 @@ instance (Sorting1 f, Sorting1 g, Sorting a) => Sorting (Compose f g a) where sorting = getCompose `contramap` sorting1 (sorting1 sorting) -class Grouping1 f => Sorting1 f where+class (Grouping1 f, Ord1 f) => Sorting1 f where sorting1 :: Sort a -> Sort (f a) default sorting1 :: Deciding1 Sorting f => Sort a -> Sort (f a) sorting1 = deciding1 (Proxy :: Proxy Sorting) sorting