1
1
# bloomfilter-blocked
2
2
3
3
` 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] > .
7
8
8
9
A bloom filter is a space-efficient data structure representing a set that can
9
10
be probablistically queried for set membership. The set membership query returns
10
11
no false negatives, but it might return false positives. That is, if an element
11
12
was added to a bloom filter, then a subsequent query definitely returns ` True ` .
12
13
If an element was * not* added to a filter, then a subsequent query may still
13
14
return ` 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.
16
16
17
17
The library includes two implementations of bloom filters: classic, and blocked.
18
18
@@ -48,8 +48,9 @@ User should take into account the following:
48
48
49
49
# Differences from the ` bloomfilter ` package
50
50
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
53
54
differences are:
54
55
55
56
* ` bloomfilter-blocked ` supports both classic and blocked bloom filters, whereas
@@ -62,14 +63,9 @@ differences are:
62
63
over a ` Hashable ` type class, instead of having a ` a -> [Hash] ` typed field.
63
64
This separation in ` bloomfilter-blocked ` allows clean (de-)serialisation of
64
65
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.
67
70
* The user can configure hash salts for improved security in
68
71
` 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