Cabal-Version: 2.2
Name: strict-containers
Version: 0.2
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.6.6
* unordered-containers v0.2.19.1
* vector vector-0.13.0.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/vector.h
include/containers.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.4
|| ==9.4.2
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.7
, deepseq >= 1.2 && < 1.5
, indexed-traversable >= 0.1.1 && < 0.2
, hashable >= 1.2.7.0 && < 1.5
, primitive >= 0.6.4.0 && < 0.8
, unordered-containers >= 0.2.19.1 && < 0.3
, strict >= 0.4 && < 0.5
, 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.Strict
Data.Strict.HashMap.Autogen.Internal
Data.Strict.HashMap.Autogen.Internal.Array
Data.Strict.HashMap.Autogen.Internal.Strict
Data.Strict.HashMap.Autogen.Internal.List
-- 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
Data.Strict.IntMap.Autogen.Internal
Data.Strict.IntMap.Autogen.Merge.Strict
Data.Strict.IntMap.Autogen.Strict.Internal
Data.Strict.IntMap.Autogen.Internal.Debug
Data.Strict.IntMap.Autogen.Internal.DeprecatedDebug
-- 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
Data.Strict.Map.Autogen.Internal
Data.Strict.Map.Autogen.Merge.Strict
Data.Strict.Map.Autogen.Strict.Internal
Data.Strict.Map.Autogen.Internal.Debug
Data.Strict.Map.Autogen.Internal.DeprecatedShowTree
-- 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.Coercions
Data.Strict.ContainersUtils.Autogen.BitUtil
Data.Strict.ContainersUtils.Autogen.StrictPair
Data.Strict.ContainersUtils.Autogen.StrictMaybe
Data.Strict.ContainersUtils.Autogen.PtrEquality
Data.Strict.ContainersUtils.Autogen.State
Data.Strict.ContainersUtils.Autogen.BitQueue
Data.Strict.ContainersUtils.Autogen.TypeError
-- 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.Mutable
Data.Strict.Vector.Autogen.Internal.Check
-- 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.9.1 && <5
, deepseq >=1.2 && <1.5
, 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