Cabal-Version:  2.2
Name:           strict-containers
Version:        0.2.1
Synopsis:       Strict containers.
Category:       Data, Data Structures
Description:
  This package provides strict versions of some standard Haskell containers -
  including 'HashMap', 'IntMap', 'Map', 'Sequence', and 'Vector'.
  .
  The reasoning is the same as that for our @strict@ package - though some
  containers already define strict /operations/ that force their inputs, the
  underlying data type is shared between the lazy and strict variants, i.e. by
  default lazy. In particular, instances are defined lazily on the common type,
  meaning that external utilities such as @lens@, @optics@, and deserialisation
  instances e.g. for @binary@ and @serialise@, all work lazily and there is not
  even the option to go strict.
  .
  This package defines separate data types, to avoid these problems. Instances
  can then be defined on these fully-strict data types.
  .
  To be clear, the "strict" vs "lazy" discussion refers to the values of a map
  or the elements of a sequence. The standard variants of these data structures
  that can be lazy-or-strict are already always-strict in their keys (for maps)
  and lengths (for sequences) respectively. This is also why we don't define
  strict variants of sets here, since the standard variants are already strict
  in their elements.
  .
  Note: generally, instances for strict containers violate their respective
  laws in the presence of bottom (undefined, error, infinite-loop). In the
  absence of bottom, laws are preserved.
  .
  This library mirrors the API of the standard lazy-or-strict variants in
  @containers@ and @unordered-containers@, including methods and fundamental
  instances. It also contains instances for @binary@ and @indexed-traversable@.
  More instances are defined in other packages, e.g. @strict-containers-lens@
  and @strict-containers-serialise@.
  .
  The current version of this library has been autogenerated from:
  .
-- generated list for versions
-- DO NOT EDIT below, AUTOGEN versions
  * containers v0.7
  * unordered-containers v0.2.20
  * vector vector-0.13.1.0
-- DO NOT EDIT above, AUTOGEN versions
License:        BSD-3-Clause
License-File:   LICENSE
Maintainer:     Ximin Luo <infinity0@pwned.gg>
Copyright:      (c) 2021 by Ximin Luo
Homepage:       https://github.com/haskellari/strict-containers
Build-type:     Simple
extra-source-files:
    CHANGELOG.md
    -- generated list for includes
    -- DO NOT EDIT below, AUTOGEN includes
    include/containers.h
    include/vector.h
    -- DO NOT EDIT above, AUTOGEN includes
tested-with:
  GHC ==8.2.2
   || ==8.4.4
   || ==8.6.5
   || ==8.8.4
   || ==8.10.7
   || ==9.0.2
   || ==9.2.8
   || ==9.4.8
   || ==9.6.5
   || ==9.8.2
   || ==9.10.1

library
  default-language: Haskell2010
  hs-source-dirs:   src
  ghc-options:      -Wall

  build-depends:
      base                    >= 4.5.0.0   && < 5
    , array                   >= 0.4.0.0
    , binary                  >= 0.8.4.1   && < 0.9
    , containers              >= 0.6.6     && < 0.8
    , deepseq                 >= 1.2       && < 1.6
    , indexed-traversable     >= 0.1.1     && < 0.2
    , hashable                >= 1.2.7.0   && < 1.6
    , primitive               >= 0.6.4.0   && < 0.10
    , unordered-containers    >= 0.2.19.1  && < 0.3
    , strict                  >= 0.4       && < 0.6
    , template-haskell
    , vector                  >= 0.13.0.0  && < 0.14
    , vector-binary-instances >= 0.2.2.0   && < 0.3

  exposed-modules:
    Data.Strict.HashMap
    Data.Strict.HashMap.Internal
    -- generated list for HashMap
    -- DO NOT EDIT below, AUTOGEN HashMap
    Data.Strict.HashMap.Autogen.Internal
    Data.Strict.HashMap.Autogen.Internal.List
    Data.Strict.HashMap.Autogen.Internal.Array
    Data.Strict.HashMap.Autogen.Internal.Debug
    Data.Strict.HashMap.Autogen.Internal.Strict
    Data.Strict.HashMap.Autogen.Strict
    -- DO NOT EDIT above, AUTOGEN HashMap
    Data.Strict.HashSet
    Data.Strict.IntMap
    Data.Strict.IntMap.Internal
    -- generated list for IntMap
    -- DO NOT EDIT below, AUTOGEN IntMap
    Data.Strict.IntMap.Autogen.Strict.Internal
    Data.Strict.IntMap.Autogen.Internal
    Data.Strict.IntMap.Autogen.Internal.DeprecatedDebug
    Data.Strict.IntMap.Autogen.Internal.Debug
    Data.Strict.IntMap.Autogen.Strict
    Data.Strict.IntMap.Autogen.Merge.Strict
    -- DO NOT EDIT above, AUTOGEN IntMap
    Data.Strict.IntSet
    Data.Strict.Map
    Data.Strict.Map.Internal
    -- generated list for Map
    -- DO NOT EDIT below, AUTOGEN Map
    Data.Strict.Map.Autogen.Strict.Internal
    Data.Strict.Map.Autogen.Internal
    Data.Strict.Map.Autogen.Internal.Debug
    Data.Strict.Map.Autogen.Internal.DeprecatedShowTree
    Data.Strict.Map.Autogen.Strict
    Data.Strict.Map.Autogen.Merge.Strict
    -- DO NOT EDIT above, AUTOGEN Map
    Data.Strict.Sequence
    Data.Strict.Sequence.Internal
    -- generated list for Sequence
    -- DO NOT EDIT below, AUTOGEN Sequence
    Data.Strict.Sequence.Autogen
    Data.Strict.Sequence.Autogen.Internal
    Data.Strict.Sequence.Autogen.Internal.Sorting
    -- DO NOT EDIT above, AUTOGEN Sequence
    Data.Strict.Set
    -- generated list for ContainersUtils
    -- DO NOT EDIT below, AUTOGEN ContainersUtils
    Data.Strict.ContainersUtils.Autogen.PtrEquality
    Data.Strict.ContainersUtils.Autogen.BitQueue
    Data.Strict.ContainersUtils.Autogen.TypeError
    Data.Strict.ContainersUtils.Autogen.StrictMaybe
    Data.Strict.ContainersUtils.Autogen.StrictPair
    Data.Strict.ContainersUtils.Autogen.State
    Data.Strict.ContainersUtils.Autogen.Prelude
    Data.Strict.ContainersUtils.Autogen.BitUtil
    Data.Strict.ContainersUtils.Autogen.Coercions
    -- DO NOT EDIT above, AUTOGEN ContainersUtils
    Data.Strict.Vector
    Data.Strict.Vector.Internal
    -- generated list for Vector
    -- DO NOT EDIT below, AUTOGEN Vector
    Data.Strict.Vector.Autogen
    Data.Strict.Vector.Autogen.Internal.Check
    Data.Strict.Vector.Autogen.Mutable
    -- DO NOT EDIT above, AUTOGEN Vector

  include-dirs: include

-- generated list for tests
-- DO NOT EDIT below, AUTOGEN tests
common containers-deps
  build-depends:
      array    >=0.4.0.0
    , base     >=4.10    && <5
    , deepseq  >=1.2     && <1.6
    , template-haskell

common containers-test-deps
  import: containers-deps
  build-depends:
      strict-containers,containers
    , QuickCheck                  >=2.7.1
    , tasty
    , tasty-hunit
    , tasty-quickcheck
    , transformers

test-suite map-strict-properties
  import: containers-test-deps
  default-language: Haskell2010
  hs-source-dirs:   tests
  main-is:          map-properties.hs
  type:             exitcode-stdio-1.0
  cpp-options:      -DSTRICT

  ghc-options:      -O2
  other-extensions:
    BangPatterns
    CPP

test-suite map-strictness-properties
  import: containers-test-deps
  default-language: Haskell2010
  hs-source-dirs:   tests
  main-is:          map-strictness.hs
  type:             exitcode-stdio-1.0
  build-depends:
      ChasingBottoms

  ghc-options:      -Wall
  other-extensions:
    BangPatterns
    CPP

  other-modules:
    Utils.IsUnit

  if impl(ghc >= 8.6)
    build-depends:
      nothunks
    other-modules:
      Utils.NoThunks

test-suite intmap-strict-properties
  import: containers-test-deps
  default-language: Haskell2010
  hs-source-dirs:   tests
  main-is:          intmap-properties.hs
  type:             exitcode-stdio-1.0
  cpp-options:      -DSTRICT
  other-modules:    IntMapValidity

  ghc-options:      -O2
  other-extensions:
    BangPatterns
    CPP

test-suite intmap-strictness-properties
  import: containers-test-deps
  default-language: Haskell2010
  hs-source-dirs:   tests
  main-is:          intmap-strictness.hs
  type:             exitcode-stdio-1.0
  other-extensions:
    BangPatterns
    CPP

  build-depends:
      ChasingBottoms

  ghc-options:      -Wall

  other-modules:
    Utils.IsUnit

  if impl(ghc >= 8.6)
    build-depends:
      nothunks
    other-modules:
      Utils.NoThunks

test-suite seq-properties
  import: containers-test-deps
  default-language: Haskell2010
  hs-source-dirs:   tests
  main-is:          seq-properties.hs
  type:             exitcode-stdio-1.0

  ghc-options:      -O2
  other-extensions:
    BangPatterns
    CPP

test-suite vector-tests-O0
  Default-Language: Haskell2010
  type: exitcode-stdio-1.0
  Main-Is:  VectorMain.hs

  other-modules: Boilerplater
                 Tests.Bundle
                 Tests.Move
                 Tests.Vector
                 Tests.Vector.Property
                 Tests.Vector.Boxed
                 Tests.Vector.UnitTests
                 Utilities

  hs-source-dirs: tests
  Build-Depends: base >= 4.5 && < 5, template-haskell, base-orphans >= 0.6, vector, strict-containers,
                 primitive, random,
                 QuickCheck >= 2.9 && < 2.15, HUnit, tasty,
                 tasty-hunit, tasty-quickcheck,
                 transformers >= 0.2.0.0

  default-extensions: CPP,
              ScopedTypeVariables,
              PatternGuards,
              MultiParamTypeClasses,
              FlexibleContexts,
              RankNTypes,
              TypeSynonymInstances,
              TypeFamilies,
              TemplateHaskell

  Ghc-Options: -O0 -threaded
  Ghc-Options: -Wall



-- DO NOT EDIT above, AUTOGEN tests