bitwise: fast multi-dimensional unboxed bit packed Bool arrays

[ bit-vectors, bsd3, data, data-structures, library ] [ Propose Tags ]

Unboxed multidimensional bit packed Bool arrays with fast aggregate operations based on lifting Bool operations to bitwise operations.

There are many other bit packed structures out there, but none met all of these requirements:

  1. unboxed bit packed Bool array,

  2. multi-dimensional indexing,

  3. fast (de)serialization, or interoperable with foreign code,

  4. fast aggregate operations (fold, map, zip).

Quick tour of the bitwise library:

Data.Bits.Bitwise
Lift boolean operations on Bool to bitwise operations on Data.Bits.Bits.
Data.Array.BitArray
Immutable bit arrays.
Data.Array.BitArray.ST
Mutable bit arrays in Control.Monad.ST.ST.
Data.Array.BitArray.IO
Mutable bit arrays in IO.
Data.Array.BitArray.ByteString
(De)serialization.
Codec.Image.PBM
Portable bitmap monochrome 2D image format.

Very rough performance benchmarks:

Versions 0.1, 0.1.0.1, 0.1.0.2, 0.1.1, 0.1.1.1, 0.2, 1.0.0.1
Dependencies array (<0.6), base (>=4.7 && <4.13), bytestring (<0.11) [details]
License BSD-3-Clause
Copyright (c) 2012,2016,2018 Claude Heiland-Allen
Author Claude Heiland-Allen
Maintainer claude@mathr.co.uk
Revised Revision 1 made by ClaudeHeilandAllen at Tue Oct 30 13:35:26 UTC 2018
Category Data, Data Structures, Bit Vectors
Home page https://code.mathr.co.uk/bitwise
Source repo head: git clone https://code.mathr.co.uk/bitwise.git
this: git clone https://code.mathr.co.uk/bitwise.git(tag v1.0.0.1)
Uploaded by ClaudeHeilandAllen at Thu Apr 26 05:41:54 UTC 2018
Distributions NixOS:1.0.0.1
Downloads 3409 total (51 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2018-04-29 [all 1 reports]
Hackage Matrix CI

Modules

[Index]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees