11# bloomfilter-blocked
22
33` bloomfilter-blocked ` is a Haskell library providing multiple fast and efficient
4- implementations of [ bloom filters] [ bloom-filter:wiki ] . It is a full rewrite of
5- the [ ` bloomfilter ` ] [ bloomfilter:hackage ] package, originally authored by Bryan
6- 4+ implementations of [ bloom filters] ( https://en.wikipedia.org/wiki/Bloom_filter ) .
5+ It is a full rewrite of the
6+ [ ` bloomfilter ` ] ( https://hackage.haskell.org/package/bloomfilter ) package,
7+ originally authored by Bryan O'Sullivan
< [email protected] > .
78
89A bloom filter is a space-efficient data structure representing a set that can
910be probablistically queried for set membership. The set membership query returns
1011no false negatives, but it might return false positives. That is, if an element
1112was added to a bloom filter, then a subsequent query definitely returns ` True ` .
1213If an element was * not* added to a filter, then a subsequent query may still
1314return ` True ` if ` False ` would be the correct answer. The probabiliy of false
14- positives -- the false positive rate (FPR) -- is configurable, as we will
15- describe later.
15+ positives -- the false positive rate (FPR) -- is configurable.
1616
1717The library includes two implementations of bloom filters: classic, and blocked.
1818
@@ -48,8 +48,9 @@ User should take into account the following:
4848
4949# Differences from the ` bloomfilter ` package
5050
51- The library is a full rewrite of the [ ` bloomfilter ` ] [ bloomfilter:hackage ]
52- package, originally authored by Bryan O'Sullivan
< [email protected] > . The main
51+ The library is a full rewrite of the
52+ [ ` bloomfilter ` ] ( https://hackage.haskell.org/package/bloomfilter ) package,
53+ originally authored by Bryan O'Sullivan
< [email protected] > . The main
5354differences are:
5455
5556* ` bloomfilter-blocked ` supports both classic and blocked bloom filters, whereas
@@ -62,14 +63,9 @@ differences are:
6263 over a ` Hashable ` type class, instead of having a ` a -> [Hash] ` typed field.
6364 This separation in ` bloomfilter-blocked ` allows clean (de-)serialisation of
6465 filters as the hashing scheme is static.
65- * ` bloomfilter-blocked ` uses [ ` XXH3 ` ] [ xxh3 ] for hashing instead of [ Jenkins'
66- ` lookup3 ` ] [ lookup3:wiki ] , which ` bloomfilter ` uses.
66+ * ` bloomfilter-blocked ` uses [ ` XXH3 ` ] ( https://xxhash.com/ ) for hashing instead
67+ of [ Jenkins'
68+ ` lookup3 ` ] ( https://en.wikipedia.org/wiki/Jenkins_hash_function#lookup3 ) , which
69+ ` bloomfilter ` uses.
6770* The user can configure hash salts for improved security in
6871 ` bloomfilter-blocked ` , whereas this is not supported in ` bloomfilter ` .
69-
70- <!-- Sources -->
71-
72- [ bloom-filter:wiki ] : https://en.wikipedia.org/wiki/Bloom_filter
73- [ bloomfilter:hackage ] : https://hackage.haskell.org/package/bloomfilter
74- [ xxh3 ] : https://xxhash.com/
75- [ lookup3:wiki ] : https://en.wikipedia.org/wiki/Jenkins_hash_function#lookup3
0 commit comments