bloomfilter-blocked: Fast, compact Bloom filters
This library provides Bloom filters. A Bloom filter is a compact but probabilistic set-like data structure, supporting fast insert and membership operations.
Bloom filters are probabilistic in the sense that when querying for set membership, they can (with some probability) falsely report that an element is present when it is not present. On the other hand it will never falsely report that an element is not present when in fact it is present. That is, it can have false positives but not false negatives. The false positive rate (FPR) can be adjusted.
Bloom filters are compact, needing only a few bits per element. For example 10 bits per element is enough for a false positive rate (FPR) of 1%, and 15 bits for 0.1%.
The library includes two implementations of Bloom filters:
- classic
- in Data.BloomFilter.Classic: a default implementation that is faithful to the classical description of a Bloom filter data structure.
- block-structured
- in Data.BloomFilter.Blocked: a cache optimised representation that is faster, at the cost of needing a few more bits per element to achieve a target FPR.
Features of the library:
Fast. See the benchmark results.
Compact. It uses optimal sized bit arrays: no bigger than necessary.
Faster still: the block-structured Bloom filters are even faster, at the expense of needing more bits per entry.
Supports very large Bloom filters, bigger than 2^32 bits.
Simple API for specifying the size of Bloom filters.
Support for hash salting, for using Bloom filters with untrusted inputs.
Serialisation support with format version tracking.
[Skip to Readme]
Downloads
- bloomfilter-blocked-0.1.0.1.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
| Versions [RSS] | 0.1.0.0, 0.1.0.1 |
|---|---|
| Change log | CHANGELOG.md |
| Dependencies | base (>=4.16 && <4.22), bloomfilter-blocked, bytestring (>=0.11 && <0.13), deepseq (>=1.4 && <1.6), primitive (>=0.9 && <0.10) [details] |
| Tested with | ghc ==9.2 || ==9.4 || ==9.6 || ==9.8 || ==9.10 || ==9.12 |
| License | Apache-2.0[multiple license files] |
| Copyright | (c) 2023-2025 Cardano Development Foundation (c) 2025 Well-Typed LLP |
| Author | Duncan Coutts, Joris Dral, Matthias Heinzel, Wen Kokke |
| Maintainer | duncan@well-typed.com, joris@well-typed.com |
| Category | Data |
| Source repo | head: git clone https://github.com/well-typed/bloomfilter-blocked this: git clone https://github.com/well-typed/bloomfilter-blocked(tag bloomfilter-blocked-0.1.0.1) |
| Uploaded | by jdral at 2025-11-25T10:47:54Z |
| Distributions | NixOS:0.1.0.0 |
| Downloads | 7 total (0 in the last 30 days) |
| Rating | (no votes yet) [estimated by Bayesian average] |
| Your Rating | |
| Status | Docs available [build log] Last success reported on 2025-11-25 [all 1 reports] |