bv-sized: a BitVector datatype that is parameterized by the vector width

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

This module defines a width-parameterized BitVector type and various associated operations that assume a 2's complement representation.

[Skip to Readme]


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Versions [RSS],,, 0.2.0, 0.2.1, 0.3.0, 0.4.0, 0.5.0, 0.6.0, 0.7.0, 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5
Change log
Dependencies base (>=4.7 && <5), containers (>=0.5.11 && <0.6), lens (>=4 && <5), mtl (>=2 && <3), parameterized-utils, prettyclass (>=1.0 && <2.0), QuickCheck (>=2.11 && <2.12), random (>=1.1 && <1.2) [details]
License BSD-3-Clause
Copyright March 2018
Author Ben Selfridge
Category Bit Vectors
Home page
Uploaded by benselfridge at 2018-04-19T17:36:19Z
Distributions Arch:1.0.5, LTSHaskell:1.0.5, NixOS:1.0.5, Stackage:1.0.5
Reverse Dependencies 11 direct, 7 indirect [details]
Downloads 11341 total (47 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 2018-04-19 [all 1 reports]

Readme for bv-sized-0.4.0

[back to package description]



This library defines a BitVector datatype that is parameterized by the vector width.

Additional features


We also provides a module called BitLayout, which is handy for defining mappings from smaller BitVectors into larger ones. This module is particularly useful when defining encodings in an instruction set.


To aid in building expression languages over BitVectors, we provide a module called App, which supports combining expressions over BitVectors using the BitVector operations and evaluating said expressions. It can be used in a pure context or in conjunction with a state monad. This module was inspired by the App type in macaw, Galois's binary analysis framework.