Avoid two-layers of pattern matchin in `union` (#537)
[packages/containers.git] / containers.cabal
index 050257c..a4f2815 100644 (file)
@@ -1,20 +1,28 @@
 name: containers
-version: 0.5.5.1
+version: 0.5.11.0
 license: BSD3
 license-file: LICENSE
-maintainer: fox@ucw.cz
+maintainer: libraries@haskell.org
 bug-reports: https://github.com/haskell/containers/issues
 synopsis: Assorted concrete container types
 category: Data Structures
 description:
+    .
     This package contains efficient general-purpose implementations
-    of various basic immutable container types.  The declared cost of
-    each operation is either worst-case or amortized, but remains
-    valid even if structures are shared.
+    of various immutable container types including sets, maps, sequences,
+    trees, and graphs.
+    .
+    For a walkthrough of what this package provides with examples of common
+    operations see the [containers
+    introduction](https://haskell-containers.readthedocs.io).
+    .
+    The declared cost of each operation is either worst-case or amortized, but
+    remains valid even if structures are shared.
+
 build-type: Simple
 cabal-version:  >=1.8
 extra-source-files:
-    include/Typeable.h
+    include/containers.h
     tests/Makefile
     tests/*.hs
     benchmarks/Makefile
@@ -25,45 +33,224 @@ extra-source-files:
     benchmarks/SetOperations/*.hs
     benchmarks/LookupGE/Makefile
     benchmarks/LookupGE/*.hs
+    changelog.md
 
 source-repository head
     type:     git
     location: http://github.com/haskell/containers.git
 
 Library
-    build-depends: base >= 4.2 && < 5, array, deepseq >= 1.2 && < 1.5
-    if impl(ghc>=6.10)
+    build-depends: base >= 4.3 && < 5, array, deepseq >= 1.2 && < 1.5
+    if impl(ghc)
         build-depends: ghc-prim
 
     ghc-options: -O2 -Wall
 
+    other-extensions: CPP, BangPatterns
+
     exposed-modules:
+        Data.Containers.ListUtils
         Data.IntMap
         Data.IntMap.Lazy
         Data.IntMap.Strict
+        Data.IntMap.Internal
+        Data.IntMap.Internal.Debug
+        Data.IntMap.Merge.Lazy
+        Data.IntMap.Merge.Strict
+        Data.IntSet.Internal
         Data.IntSet
         Data.Map
         Data.Map.Lazy
+        Data.Map.Lazy.Merge
+        Data.Map.Merge.Lazy
+        Data.Map.Strict.Internal
         Data.Map.Strict
+        Data.Map.Strict.Merge
+        Data.Map.Merge.Strict
+        Data.Map.Internal
+        Data.Map.Internal.Debug
+        Data.Set.Internal
         Data.Set
-    if !impl(nhc98)
-        exposed-modules:
-            Data.Graph
-            Data.Sequence
-            Data.Tree
+        Data.Graph
+        Data.Sequence
+        Data.Sequence.Internal
+        Data.Sequence.Internal.Sorting
+        Data.Tree
+        Utils.Containers.Internal.BitUtil
+        Utils.Containers.Internal.BitQueue
+        Utils.Containers.Internal.StrictPair
+
     other-modules:
-        Data.IntMap.Base
-        Data.IntSet.Base
-        Data.Map.Base
-        Data.Set.Base
-        Data.Utils.BitUtil
-        Data.Utils.StrictFold
-        Data.Utils.StrictPair
+        Utils.Containers.Internal.State
+        Utils.Containers.Internal.StrictFold
+        Utils.Containers.Internal.StrictMaybe
+        Utils.Containers.Internal.PtrEquality
+        Utils.Containers.Internal.Coercions
+        Data.Map.Internal.DeprecatedShowTree
+        Data.IntMap.Internal.DeprecatedDebug
 
     include-dirs: include
 
-    if impl(ghc<7.0)
-        extensions: MagicHash, DeriveDataTypeable, StandaloneDeriving, Rank2Types
+-----------------------------
+-- B E N C H M A R K I N G --
+-----------------------------
+
+benchmark intmap-benchmarks
+  type: exitcode-stdio-1.0
+  hs-source-dirs: benchmarks
+  main-is: IntMap.hs
+  ghc-options: -O2
+  build-depends:
+    base >= 4.2 && < 5,
+    containers,
+    criterion >= 0.4.0 && < 1.3,
+    deepseq >= 1.1.0.0 && < 1.5
+
+benchmark intset-benchmarks
+  type: exitcode-stdio-1.0
+  hs-source-dirs: benchmarks
+  main-is: IntSet.hs
+  ghc-options: -O2
+  build-depends:
+    base >= 4.2 && < 5,
+    containers,
+    criterion >= 0.4.0 && < 1.3,
+    deepseq >= 1.1.0.0 && < 1.5
+
+benchmark map-benchmarks
+  type: exitcode-stdio-1.0
+  hs-source-dirs: benchmarks
+  main-is: Map.hs
+  ghc-options: -O2
+  build-depends:
+    base >= 4.2 && < 5,
+    containers,
+    criterion >= 0.4.0 && < 1.3,
+    deepseq >= 1.1.0.0 && < 1.5,
+    transformers
+
+benchmark sequence-benchmarks
+  type: exitcode-stdio-1.0
+  hs-source-dirs: benchmarks
+  main-is: Sequence.hs
+  ghc-options: -O2
+  build-depends:
+    base >= 4.2 && < 5,
+    containers,
+    criterion >= 0.4.0 && < 1.3,
+    deepseq >= 1.1.0.0 && < 1.5,
+    random < 1.2,
+    transformers
+
+benchmark set-benchmarks
+  type: exitcode-stdio-1.0
+  hs-source-dirs: benchmarks
+  main-is: Set.hs
+  ghc-options: -O2
+  build-depends:
+    base >= 4.2 && < 5,
+    containers,
+    criterion >= 0.4.0 && < 1.3,
+    deepseq >= 1.1.0.0 && < 1.5
+
+benchmark set-operations-intmap
+  type: exitcode-stdio-1.0
+  hs-source-dirs: benchmarks/SetOperations
+  main-is: SetOperations-IntMap.hs
+  other-modules: SetOperations
+  ghc-options: -O2
+  build-depends:
+    base >= 4.2 && < 5,
+    containers,
+    criterion >= 0.4.0 && < 1.3
+
+benchmark set-operations-intset
+  type: exitcode-stdio-1.0
+  hs-source-dirs: benchmarks/SetOperations
+  main-is: SetOperations-IntSet.hs
+  other-modules: SetOperations
+  ghc-options: -O2
+  build-depends:
+    base >= 4.2 && < 5,
+    containers,
+    criterion >= 0.4.0 && < 1.3
+
+benchmark set-operations-map
+  type: exitcode-stdio-1.0
+  hs-source-dirs: benchmarks/SetOperations
+  main-is: SetOperations-Map.hs
+  other-modules: SetOperations
+  ghc-options: -O2
+  build-depends:
+    base >= 4.2 && < 5,
+    containers,
+    criterion >= 0.4.0 && < 1.3
+
+benchmark set-operations-set
+  type: exitcode-stdio-1.0
+  hs-source-dirs: benchmarks/SetOperations
+  main-is: SetOperations-Set.hs
+  other-modules: SetOperations
+  ghc-options: -O2
+  build-depends:
+    base >= 4.2 && < 5,
+    containers,
+    criterion >= 0.4.0 && < 1.3
+
+benchmark lookupge-intmap
+  type: exitcode-stdio-1.0
+  hs-source-dirs: benchmarks/LookupGE, .
+  main-is: IntMap.hs
+  other-modules:
+      Data.IntMap
+      Data.IntMap.Internal.DeprecatedDebug
+      Data.IntMap.Lazy
+      Data.IntMap.Strict
+      Data.IntSet.Internal
+      LookupGE_IntMap
+      Utils.Containers.Internal.BitUtil
+      Utils.Containers.Internal.StrictFold
+      Utils.Containers.Internal.StrictPair
+  ghc-options: -O2
+  cpp-options: -DTESTING
+  other-modules:
+    Data.IntMap.Internal
+  build-depends:
+    base >= 4.2 && < 5,
+    containers,
+    criterion >= 0.4.0 && < 1.3,
+    deepseq >= 1.1.0.0 && < 1.5,
+    ghc-prim
+
+benchmark lookupge-map
+  type: exitcode-stdio-1.0
+  hs-source-dirs: benchmarks/LookupGE, .
+  main-is: Map.hs
+  other-modules:
+      Data.Map
+      Data.Map.Internal.Debug
+      Data.Map.Internal.DeprecatedShowTree
+      Data.Map.Lazy
+      Data.Map.Strict
+      Data.Map.Strict.Internal
+      Data.Set.Internal
+      LookupGE_Map
+      Utils.Containers.Internal.BitQueue
+      Utils.Containers.Internal.BitUtil
+      Utils.Containers.Internal.PtrEquality
+      Utils.Containers.Internal.StrictFold
+      Utils.Containers.Internal.StrictMaybe
+      Utils.Containers.Internal.StrictPair
+  ghc-options: -O2
+  cpp-options: -DTESTING
+  other-modules:
+    Data.Map.Internal
+  build-depends:
+    base >= 4.2 && < 5,
+    containers,
+    criterion >= 0.4.0 && < 1.3,
+    deepseq >= 1.1.0.0 && < 1.5,
+    ghc-prim
 
 -------------------
 -- T E S T I N G --
@@ -72,75 +259,145 @@ Library
 -- Every test-suite contains the build-depends and options of the library,
 -- plus the testing stuff.
 
--- Because the test-suites cannot contain conditionals in GHC 7.0, the extensions
--- are switched on for every compiler to allow GHC < 7.0 to compile the tests
--- (because GHC < 7.0 cannot handle conditional LANGUAGE pragmas).
--- When testing with GHC < 7.0 is not needed, the extensions should be removed.
-
 Test-suite map-lazy-properties
     hs-source-dirs: tests, .
     main-is: map-properties.hs
+    other-modules:
+        Data.Map.Internal
+        Data.Map.Internal.Debug
+        Data.Map.Internal.DeprecatedShowTree
+        Data.Map.Lazy
+        Data.Map.Merge.Lazy
+        Data.Set
+        Data.Set.Internal
+        Utils.Containers.Internal.BitQueue
+        Utils.Containers.Internal.BitUtil
+        Utils.Containers.Internal.PtrEquality
+        Utils.Containers.Internal.StrictFold
+        Utils.Containers.Internal.StrictMaybe
+        Utils.Containers.Internal.StrictPair
     type: exitcode-stdio-1.0
     cpp-options: -DTESTING
 
-    build-depends: base >= 4.2 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
+    build-depends: base >= 4.3 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
     ghc-options: -O2
-    extensions: MagicHash, DeriveDataTypeable, StandaloneDeriving, Rank2Types
+    other-extensions: CPP, BangPatterns
+    include-dirs: include
 
     build-depends:
         HUnit,
-        QuickCheck,
+        QuickCheck >= 2.7.1,
         test-framework,
         test-framework-hunit,
-        test-framework-quickcheck2
+        test-framework-quickcheck2,
+        transformers
 
 Test-suite map-strict-properties
     hs-source-dirs: tests, .
     main-is: map-properties.hs
+    other-modules:
+        Data.Map.Internal
+        Data.Map.Internal.Debug
+        Data.Map.Internal.DeprecatedShowTree
+        Data.Map.Merge.Strict
+        Data.Map.Strict
+        Data.Map.Strict.Internal
+        Data.Set
+        Data.Set.Internal
+        Utils.Containers.Internal.BitQueue
+        Utils.Containers.Internal.BitUtil
+        Utils.Containers.Internal.PtrEquality
+        Utils.Containers.Internal.StrictFold
+        Utils.Containers.Internal.StrictMaybe
+        Utils.Containers.Internal.StrictPair
     type: exitcode-stdio-1.0
     cpp-options: -DTESTING -DSTRICT
 
-    build-depends: base >= 4.2 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
+    build-depends: base >= 4.3 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
     ghc-options: -O2
-    extensions: MagicHash, DeriveDataTypeable, StandaloneDeriving, Rank2Types
+    other-extensions: CPP, BangPatterns
+    include-dirs: include
 
     build-depends:
         HUnit,
-        QuickCheck,
+        QuickCheck >= 2.7.1,
         test-framework,
         test-framework-hunit,
+        test-framework-quickcheck2,
+        transformers
+
+Test-suite bitqueue-properties
+    hs-source-dirs: tests, .
+    main-is: bitqueue-properties.hs
+    other-modules:
+        Utils.Containers.Internal.BitQueue
+        Utils.Containers.Internal.BitUtil
+    type: exitcode-stdio-1.0
+    cpp-options: -DTESTING
+
+    build-depends: base >= 4.3 && < 5, ghc-prim
+    ghc-options: -O2
+    other-extensions: CPP, BangPatterns
+    include-dirs: include
+
+    build-depends:
+        QuickCheck >= 2.7.1,
+        test-framework,
         test-framework-quickcheck2
 
 Test-suite set-properties
     hs-source-dirs: tests, .
     main-is: set-properties.hs
+    other-modules:
+        Data.IntSet
+        Data.IntSet.Internal
+        Data.Set
+        Data.Set.Internal
+        Utils.Containers.Internal.BitUtil
+        Utils.Containers.Internal.PtrEquality
+        Utils.Containers.Internal.StrictFold
+        Utils.Containers.Internal.StrictPair
     type: exitcode-stdio-1.0
     cpp-options: -DTESTING
 
-    build-depends: base >= 4.2 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
+    build-depends: base >= 4.3 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
     ghc-options: -O2
-    extensions: MagicHash, DeriveDataTypeable, StandaloneDeriving, Rank2Types
+    other-extensions: CPP, BangPatterns
+    include-dirs: include
 
     build-depends:
         HUnit,
-        QuickCheck,
+        QuickCheck >= 2.7.1,
         test-framework,
         test-framework-hunit,
-        test-framework-quickcheck2
+        test-framework-quickcheck2,
+        transformers
 
 Test-suite intmap-lazy-properties
     hs-source-dirs: tests, .
     main-is: intmap-properties.hs
+    other-modules:
+        Data.IntMap.Internal
+        Data.IntMap.Internal.Debug
+        Data.IntMap.Internal.DeprecatedDebug
+        Data.IntMap.Lazy
+        Data.IntSet
+        Data.IntSet.Internal
+        IntMapValidity
+        Utils.Containers.Internal.BitUtil
+        Utils.Containers.Internal.StrictFold
+        Utils.Containers.Internal.StrictPair
     type: exitcode-stdio-1.0
     cpp-options: -DTESTING
 
-    build-depends: base >= 4.2 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
+    build-depends: base >= 4.3 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
     ghc-options: -O2
-    extensions: MagicHash, DeriveDataTypeable, StandaloneDeriving, Rank2Types
+    other-extensions: CPP, BangPatterns
+    include-dirs: include
 
     build-depends:
         HUnit,
-        QuickCheck,
+        QuickCheck >= 2.7.1,
         test-framework,
         test-framework-hunit,
         test-framework-quickcheck2
@@ -148,16 +405,28 @@ Test-suite intmap-lazy-properties
 Test-suite intmap-strict-properties
     hs-source-dirs: tests, .
     main-is: intmap-properties.hs
+    other-modules:
+        Data.IntMap.Internal
+        Data.IntMap.Internal.Debug
+        Data.IntMap.Internal.DeprecatedDebug
+        Data.IntMap.Strict
+        Data.IntSet
+        Data.IntSet.Internal
+        IntMapValidity
+        Utils.Containers.Internal.BitUtil
+        Utils.Containers.Internal.StrictFold
+        Utils.Containers.Internal.StrictPair
     type: exitcode-stdio-1.0
     cpp-options: -DTESTING -DSTRICT
 
-    build-depends: base >= 4.2 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
+    build-depends: base >= 4.3 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
     ghc-options: -O2
-    extensions: MagicHash, DeriveDataTypeable, StandaloneDeriving, Rank2Types
+    other-extensions: CPP, BangPatterns
+    include-dirs: include
 
     build-depends:
         HUnit,
-        QuickCheck,
+        QuickCheck >= 2.7.1,
         test-framework,
         test-framework-hunit,
         test-framework-quickcheck2
@@ -165,16 +434,27 @@ Test-suite intmap-strict-properties
 Test-suite intset-properties
     hs-source-dirs: tests, .
     main-is: intset-properties.hs
+    other-modules:
+        Data.IntSet
+        Data.IntSet.Internal
+        Data.Set
+        Data.Set.Internal
+        IntSetValidity
+        Utils.Containers.Internal.BitUtil
+        Utils.Containers.Internal.PtrEquality
+        Utils.Containers.Internal.StrictFold
+        Utils.Containers.Internal.StrictPair
     type: exitcode-stdio-1.0
     cpp-options: -DTESTING
 
-    build-depends: base >= 4.2 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
+    build-depends: base >= 4.3 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
     ghc-options: -O2
-    extensions: MagicHash, DeriveDataTypeable, StandaloneDeriving, Rank2Types
+    other-extensions: CPP, BangPatterns
+    include-dirs: include
 
     build-depends:
         HUnit,
-        QuickCheck,
+        QuickCheck >= 2.7.1,
         test-framework,
         test-framework-hunit,
         test-framework-quickcheck2
@@ -182,63 +462,179 @@ Test-suite intset-properties
 Test-suite deprecated-properties
     hs-source-dirs: tests, .
     main-is: deprecated-properties.hs
+    other-modules:
+        Data.IntMap
+        Data.IntMap.Internal
+        Data.IntMap.Internal.DeprecatedDebug
+        Data.IntMap.Lazy
+        Data.IntMap.Strict
+        Data.IntSet.Internal
+        Data.Map
+        Data.Map.Internal
+        Data.Map.Internal.Debug
+        Data.Map.Internal.DeprecatedShowTree
+        Data.Map.Lazy
+        Data.Map.Strict
+        Data.Map.Strict.Internal
+        Data.Set.Internal
+        Utils.Containers.Internal.BitQueue
+        Utils.Containers.Internal.BitUtil
+        Utils.Containers.Internal.PtrEquality
+        Utils.Containers.Internal.StrictFold
+        Utils.Containers.Internal.StrictMaybe
+        Utils.Containers.Internal.StrictPair
     type: exitcode-stdio-1.0
     cpp-options: -DTESTING
 
-    build-depends: base >= 4.2 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
+    build-depends: base >= 4.3 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
     ghc-options: -O2
-    extensions: MagicHash, DeriveDataTypeable, StandaloneDeriving, Rank2Types
+    other-extensions: CPP, BangPatterns
+    include-dirs: include
 
     build-depends:
-        QuickCheck,
+        QuickCheck >= 2.7.1,
         test-framework,
         test-framework-quickcheck2
 
 Test-suite seq-properties
     hs-source-dirs: tests, .
     main-is: seq-properties.hs
+    other-modules:
+        Data.Sequence
+        Data.Sequence.Internal
+        Utils.Containers.Internal.StrictPair
     type: exitcode-stdio-1.0
     cpp-options: -DTESTING
 
-    build-depends: base >= 4.2 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
+    build-depends: base >= 4.3 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
     ghc-options: -O2
-    extensions: MagicHash, DeriveDataTypeable, StandaloneDeriving, Rank2Types
+    other-extensions: CPP, BangPatterns
+    include-dirs: include
 
     build-depends:
-        QuickCheck,
+        QuickCheck >= 2.7.1,
         test-framework,
-        test-framework-quickcheck2
+        test-framework-quickcheck2,
+        transformers
+
+Test-suite tree-properties
+    hs-source-dirs: tests, .
+    main-is: tree-properties.hs
+    other-modules:
+        Data.Tree
+    type: exitcode-stdio-1.0
+    cpp-options: -DTESTING
+
+    build-depends: base >= 4.3 && < 5, array, deepseq >= 1.2 && < 1.5, ghc-prim
+    ghc-options: -O2
+    other-extensions: CPP, BangPatterns
+    include-dirs: include
+
+    build-depends:
+        QuickCheck >= 2.7.1,
+        test-framework,
+        test-framework-quickcheck2,
+        transformers
 
 test-suite map-strictness-properties
   hs-source-dirs: tests, .
-  main-is: MapStrictness.hs
+  main-is: map-strictness.hs
+  other-modules:
+      Data.Map.Internal
+      Data.Map.Internal.Debug
+      Data.Map.Internal.DeprecatedShowTree
+      Data.Map.Strict
+      Data.Map.Strict.Internal
+      Data.Set.Internal
+      Utils.Containers.Internal.BitQueue
+      Utils.Containers.Internal.BitUtil
+      Utils.Containers.Internal.PtrEquality
+      Utils.Containers.Internal.StrictFold
+      Utils.Containers.Internal.StrictMaybe
+      Utils.Containers.Internal.StrictPair
   type: exitcode-stdio-1.0
 
   build-depends:
     array,
-    base >= 4.2 && < 5,
+    base >= 4.3 && < 5,
     ChasingBottoms,
     deepseq >= 1.2 && < 1.5,
-    QuickCheck >= 2.4.0.1,
+    QuickCheck >= 2.7.1,
     ghc-prim,
     test-framework >= 0.3.3,
     test-framework-quickcheck2 >= 0.2.9
 
   ghc-options: -Wall
+  other-extensions: CPP, BangPatterns
+  include-dirs: include
 
 test-suite intmap-strictness-properties
   hs-source-dirs: tests, .
-  main-is: IntMapStrictness.hs
+  main-is: intmap-strictness.hs
+  other-modules:
+      Data.IntMap.Internal
+      Data.IntMap.Internal.DeprecatedDebug
+      Data.IntMap.Strict
+      Data.IntSet.Internal
+      Utils.Containers.Internal.BitUtil
+      Utils.Containers.Internal.StrictFold
+      Utils.Containers.Internal.StrictPair
   type: exitcode-stdio-1.0
+  other-extensions: CPP, BangPatterns
 
   build-depends:
     array,
-    base >= 4.2 && < 5,
+    base >= 4.3 && < 5,
+    ChasingBottoms,
+    deepseq >= 1.2 && < 1.5,
+    QuickCheck >= 2.7.1,
+    ghc-prim,
+    test-framework >= 0.3.3,
+    test-framework-quickcheck2 >= 0.2.9
+
+  ghc-options: -Wall
+  include-dirs: include
+
+test-suite intset-strictness-properties
+  hs-source-dirs: tests, .
+  main-is: intset-strictness.hs
+  other-modules:
+      Data.IntSet
+      Data.IntSet.Internal
+      Utils.Containers.Internal.BitUtil
+      Utils.Containers.Internal.StrictFold
+      Utils.Containers.Internal.StrictPair
+  type: exitcode-stdio-1.0
+  other-extensions: CPP, BangPatterns
+
+  build-depends:
+    array,
+    base >= 4.3 && < 5,
+    ChasingBottoms,
+    deepseq >= 1.2 && < 1.5,
+    QuickCheck >= 2.7.1,
+    ghc-prim,
+    test-framework >= 0.3.3,
+    test-framework-quickcheck2 >= 0.2.9
+
+  ghc-options: -Wall
+  include-dirs: include
+
+test-suite listutils-properties
+  hs-source-dirs: tests, .
+  main-is: listutils-properties.hs
+  other-modules:
+      Data.Containers.ListUtils
+  type: exitcode-stdio-1.0
+
+  build-depends:
+    base >= 4.3 && < 5,
     ChasingBottoms,
     deepseq >= 1.2 && < 1.5,
-    QuickCheck >= 2.4.0.1,
+    QuickCheck >= 2.7.1,
     ghc-prim,
     test-framework >= 0.3.3,
     test-framework-quickcheck2 >= 0.2.9
 
   ghc-options: -Wall
+  include-dirs: include