strict-containers: Strict containers.
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
Warnings:
- 'ghc-options: -O0' is not needed. Use the --disable-optimization configure flag.
- 'ghc-options: -O2' is rarely needed. Check that it is giving a real benefit and not just imposing longer compile times on your users.
- These packages miss upper bounds: - array - template-haskell Please add them, using `cabal gen-bounds` for suggestions. For more information see: https://pvp.haskell.org/
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:
containers v0.7
unordered-containers v0.2.20
vector vector-0.13.1.0
Properties
Versions | 0.1, 0.2, 0.2.1, 0.2.1 |
---|---|
Change log | CHANGELOG.md |
Dependencies | array (>=0.4.0.0), base (>=4.5.0.0 && <5), binary (>=0.8.4.1 && <0.9), containers (>=0.6.6 && <0.8), deepseq (>=1.2 && <1.6), hashable (>=1.2.7.0 && <1.6), indexed-traversable (>=0.1.1 && <0.2), primitive (>=0.6.4.0 && <0.10), strict (>=0.4 && <0.6), template-haskell, unordered-containers (>=0.2.19.1 && <0.3), vector (>=0.13.0.0 && <0.14), vector-binary-instances (>=0.2.2.0 && <0.3) [details] |
License | BSD-3-Clause |
Copyright | (c) 2021 by Ximin Luo |
Author | |
Maintainer | Ximin Luo <infinity0@pwned.gg> |
Category | Data, Data Structures |
Home page | https://github.com/haskellari/strict-containers |
Uploaded | by ErikDeCastroLopo at 2024-08-05T01:47:45Z |
Modules
[Index] [Quick Jump]
- Data
- Strict
- ContainersUtils
- Autogen
- Data.Strict.ContainersUtils.Autogen.BitQueue
- Data.Strict.ContainersUtils.Autogen.BitUtil
- Data.Strict.ContainersUtils.Autogen.Coercions
- Data.Strict.ContainersUtils.Autogen.Prelude
- Data.Strict.ContainersUtils.Autogen.PtrEquality
- Data.Strict.ContainersUtils.Autogen.State
- Data.Strict.ContainersUtils.Autogen.StrictMaybe
- Data.Strict.ContainersUtils.Autogen.StrictPair
- Data.Strict.ContainersUtils.Autogen.TypeError
- Autogen
- Data.Strict.HashMap
- Data.Strict.HashSet
- Data.Strict.IntMap
- Data.Strict.IntSet
- Data.Strict.Map
- Data.Strict.Sequence
- Data.Strict.Set
- Data.Strict.Vector
- Data.Strict.Vector.Autogen
- Internal
- Data.Strict.Vector.Autogen.Internal.Check
- Data.Strict.Vector.Autogen.Mutable
- Internal
- Data.Strict.Vector.Internal
- Data.Strict.Vector.Autogen
- ContainersUtils
- Strict
Downloads
- strict-containers-0.2.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees