This package contains an efficient implementation of little-endian, immutable bit vectors. It implements most applicable type-classes and also conversions to and from signed or unsigned numbers.
For an implementation of big-endian, immutable bit vectors, use the bv package.
For an implementation of little-endian, mutable bit vectors, use the bitvec package.
This package utilizes the "multiple sub-libraries" feature of Cabal.
The intended usage is an "opt-in" dependency footprint for the bv-little package, as not all type-class instances which are defined are exposed by default.
Therefore package consumers can select which, if any, type-class instances outside of the core libraries they wish to have exposed and transitively depend on the associated package(s).
-
All
BitVectorinstances of type-classes defined inbaseare exported by default from theData.BitVector.LittleEndianmodule. -
Each
BitVectorinstance of a type-class defined in a package other thanbaseis exposed through a specific sub-library dependency and a special exposing module.
To access an instance of a type-class defined outside base, add the requisite sub-library to your build-depends and import the corresponding exposing module within your code-base.
| Sub-library Dependency | Exposing Module | Type-class Instance(s) |
|---|---|---|
bv-little:instances-binary |
Data.BitVector.LittleEndian.Binary |
|
bv-little:instances-mono-traversable |
Data.BitVector.LittleEndian.MonoTraversable |
|
bv-little:instances-mono-traversable-keys |
Data.BitVector.LittleEndian.MonoKeyed |
|
bv-little:instances-quickcheck |
Data.BitVector.LittleEndian.QuickCheck |
|
bv-little:instances-text-show |
Data.BitVector.LittleEndian.TextShow |
|
The test suite ensures that all type-class instances are "lawful" and that data-structure–specific functionality is well defined.
The TestSuite.hs file contains the specification. It can be run by invoking any of the following commands:
-
cabal test -
stack test
The benchmarks provide an empyrical check for the asymptotic complexity of data structure operations and also provide easy metrics for detecting performance regressions.
The Benchmarks.hs file contains these metrics. It can be run by invoking any of the following commands:
-
cabal bench -
stack bench