strict-containers: Strict containers.

[ bsd3, data, data-structures, library ] [ Propose Tags ] [ Report a vulnerability ]

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

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1, 0.2, 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]
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
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:48:34Z
Distributions
Reverse Dependencies 2 direct, 0 indirect [details]
Downloads 890 total (29 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2024-08-05 [all 1 reports]