range-set-list 0.1.0.0 → 0.1.1.0
raw patch · 5 files changed
+39/−8 lines, 5 filesdep +deepseqdep +hashabledep +semigroupsPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: deepseq, hashable, semigroups
API changes (from Hackage documentation)
- Data.RangeSet.List: instance (Ord a, Enum a) => Monoid (RSet a)
- Data.RangeSet.List: instance Eq a => Eq (RSet a)
- Data.RangeSet.List: instance Ord a => Ord (RSet a)
- Data.RangeSet.List: instance Show a => Show (RSet a)
+ Data.RangeSet.List: instance (GHC.Classes.Ord a, GHC.Enum.Enum a) => Data.Semigroup.Semigroup (Data.RangeSet.List.RSet a)
+ Data.RangeSet.List: instance (GHC.Classes.Ord a, GHC.Enum.Enum a) => GHC.Base.Monoid (Data.RangeSet.List.RSet a)
+ Data.RangeSet.List: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Data.RangeSet.List.RSet a)
+ Data.RangeSet.List: instance Data.Hashable.Class.Hashable a => Data.Hashable.Class.Hashable (Data.RangeSet.List.RSet a)
+ Data.RangeSet.List: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.RangeSet.List.RSet a)
+ Data.RangeSet.List: instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.RangeSet.List.RSet a)
+ Data.RangeSet.List: instance GHC.Show.Show a => GHC.Show.Show (Data.RangeSet.List.RSet a)
Files
- CHANGELOG.md +8/−0
- README.md +4/−0
- range-set-list.cabal +11/−5
- src/Data/RangeSet/List.hs +15/−2
- tests/Tests.hs +1/−1
CHANGELOG.md view
@@ -1,3 +1,11 @@+### 0.1.1.0++- Add `Semigroup`, `NFData`, `Hashable` and `Typeable` instances++### 0.1.0.0++- Consider API stable+ ### 0.0.7 - `findMin` & `findMax`
README.md view
@@ -1,6 +1,10 @@ # range-set-list [](https://travis-ci.org/phadej/range-set-list)+[](http://hackage.haskell.org/package/range-set-list)+[](http://stackage.org/lts-2/package/range-set-list)+[](http://stackage.org/lts-3/package/range-set-list)+[](http://stackage.org/nightly/package/range-set-list) A trivial implementation of range sets.
range-set-list.cabal view
@@ -1,9 +1,9 @@--- This file has been generated from package.yaml by hpack version 0.7.1.+-- This file has been generated from package.yaml by hpack version 0.8.0. -- -- see: https://github.com/sol/hpack name: range-set-list-version: 0.1.0.0+version: 0.1.1.0 synopsis: Memory efficient sets with continuous ranges of elements. description: Memory efficient sets with continuous ranges of elements. List based implementation. Interface mimics 'Data.Set' interface where possible. homepage: https://github.com/phadej/range-set-list#readme@@ -12,7 +12,7 @@ license-file: LICENSE author: Oleg Grenrus <oleg.grenrus@iki.fi> maintainer: Oleg Grenrus <oleg.grenrus@iki.fi>-category: Documentation+category: Data tested-with: GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.2 build-type: Simple cabal-version: >= 1.10@@ -30,7 +30,10 @@ src ghc-options: -Wall -fwarn-tabs build-depends:- base >=4.5 && <4.9+ base >=4.5 && <4.9,+ semigroups >=0.16.2.2 && <0.19,+ deepseq >=1.3.0.0 && <1.5,+ hashable >=1.2.3.3 && <1.3 exposed-modules: Data.RangeSet.List default-language: Haskell2010@@ -42,7 +45,10 @@ tests ghc-options: -Wall -fwarn-tabs build-depends:- base >=4.5 && <4.9,+ base >=4.5 && <4.9,+ semigroups >=0.16.2.2 && <0.19,+ deepseq >=1.3.0.0 && <1.5,+ hashable >=1.2.3.3 && <1.3, containers >=0.5 && <0.6, tasty >=0.8 && <0.12, tasty-quickcheck >=0.8 && <0.9,
src/Data/RangeSet/List.hs view
@@ -29,7 +29,7 @@ and there aren't elements in between (not true for 'Float' and 'Double'). Also 'succ' and 'pred' are never called for largest or smallest value respectively. -}-+{-# LANGUAGE DeriveDataTypeable #-} module Data.RangeSet.List ( -- * Range set type RSet@@ -77,18 +77,31 @@ import Prelude hiding (filter,foldl,foldr,null,map) import qualified Prelude +import Control.DeepSeq (NFData(..))+import Data.Typeable (Typeable)+import Data.Semigroup (Semigroup(..)) import Data.Monoid (Monoid(..))+import Data.Hashable (Hashable(..)) -- | Internally set is represented as sorted list of distinct inclusive ranges. newtype RSet a = RSet [(a, a)]- deriving (Eq, Ord)+ deriving (Eq, Ord, Typeable) instance Show a => Show (RSet a) where show (RSet xs) = "fromRangeList " ++ show xs +instance (Ord a, Enum a) => Semigroup (RSet a) where+ (<>) = union+ instance (Ord a, Enum a) => Monoid (RSet a) where mempty = empty mappend = union++instance Hashable a => Hashable (RSet a) where+ hashWithSalt salt (RSet xs) = hashWithSalt salt xs++instance NFData a => NFData (RSet a) where+ rnf (RSet xs) = rnf xs {- Operators -} infixl 9 \\ --
tests/Tests.hs view
@@ -10,7 +10,7 @@ import Control.Applicative import Data.Int -import Data.Monoid+import Data.Semigroup main :: IO () main = defaultMain tests