-
Notifications
You must be signed in to change notification settings - Fork 1
/
cuckoo.cabal
168 lines (152 loc) · 4.07 KB
/
cuckoo.cabal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
cabal-version: 2.4
name: cuckoo
version: 0.3.1
synopsis: Haskell Implementation of Cuckoo Filters
Description:
Haskell implementation of Cuckoo filters as described in
.
<https://www.cs.cmu.edu/~dga/papers/cuckoo-conext2014.pdf B. Fan, D.G. Anderson, M. Kaminsky, M.D. Mitzenmacher. Cuckoo Filter: Practically Better Than Bloom. In Proc. CoNEXT, 2014.>
.
Cuckoo filters are a data structure for probabilistic set membership. They
support insertion, deletion, and membership queries for set elements.
.
Membership queries may return false positive results. But queries don't
return false negative results.
.
Unlike Bloom filters, Cuckoo filters maintain an upper bound on the false
positive rate that is independent of the load of the filter. However,
insertion of new elements in the filter can fail. For typical
configurations this probability is very small for load factors smaller than
90 percent.
homepage: https://github.com/larskuhtz/cuckoo
bug-reports: https://github.com/larskuhtz/cuckoo/issues
license: BSD-3-Clause
license-file: LICENSE
author: Lars Kuhtz
maintainer: [email protected]
copyright: Copyright (c) 2019-2021 Lars Kuhtz <[email protected]>
category: Data
tested-with:
GHC==9.0.1
GHC==8.10.7
GHC==8.8.4
extra-source-files:
README.md
CHANGELOG.md
source-repository head
type: git
location: https://github.com/larskuhtz/cuckoo.git
flag mwc-random
description: Use mwc-random instead of the random package
manual: True
default: False
flag pcg-random
description: Use pcg-random instead of the random package
manual: True
default: False
library random-internal
hs-source-dirs: lib/random
default-language: Haskell2010
exposed-modules:
System.Random.Internal
ghc-options:
-Wall
build-depends:
, base >=4.11 && <5
, primitive >=0.6.4.0
if flag(pcg-random)
build-depends:
, pcg-random >=0.1
cpp-options: -DRANDOM_PCG
elif flag(mwc-random)
build-depends:
, mwc-random >=0.14
, vector >=0.12
cpp-options: -DRANDOM_MWC
else
build-depends:
, random >=1.1
library
hs-source-dirs: src
default-language: Haskell2010
ghc-options:
-Wall
exposed-modules:
Data.Cuckoo
Data.Cuckoo.Internal
Data.Cuckoo.Internal.HashFunctions
build-depends:
, random-internal
-- external
, base >=4.11 && <5
, bytestring >=0.10
, hashes >=0.2
, primitive >=0.6.4.0
test-suite tests
type: exitcode-stdio-1.0
hs-source-dirs: test
default-language: Haskell2010
ghc-options:
-Wall
-rtsopts
-threaded
-with-rtsopts=-N
main-is: Main.hs
build-depends:
-- internal
, cuckoo
, random-internal
-- external
, base >=4.11 && <5
, blake2 >=0.3
, bytestring >=0.10
, hashable >=1.3
, stopwatch >=0.1
test-suite doctests
type: exitcode-stdio-1.0
hs-source-dirs: test
default-language: Haskell2010
ghc-options:
-Wall
-threaded
-with-rtsopts=-N
main-is: doctest.hs
build-depends:
, base >=4.11 && <5
, doctest >= 0.18
benchmark spellchecker
type: exitcode-stdio-1.0
hs-source-dirs: bench
default-language: Haskell2010
ghc-options:
-Wall
-rtsopts
-threaded
-with-rtsopts=-N
main-is: SpellChecker.hs
build-depends:
-- internal
, cuckoo
-- external
, base >=4.11 && <5
, bytestring >=0.10
, stopwatch >=0.1
benchmark internal-benchmarks
type: exitcode-stdio-1.0
hs-source-dirs: bench
main-is: Internal.hs
default-language: Haskell2010
ghc-options:
-Wall
-rtsopts
-threaded
-with-rtsopts=-N
-mbmi2
-msse4.2
build-depends:
-- internal
, cuckoo
-- external
, QuickCheck >= 2.13
, base >=4.10 && <5
, criterion >= 1.5