haskelldb-0.12: SQL unwrapper for Haskell.Source codeContentsIndex
Database.HaskellDB.BoundedList
Portabilitynon-portable
Stabilityexperimental
Maintainerhaskelldb-users@lists.sourceforge.net
Description

The main idea of bounded lists is to create lists with predetermined maximum size.

BoundedList is a simple, fast and type safe approach to implementing this idea. The implementation is based on inductive instances, making it very easy to expand with new bounds. A new bound only requires one instance of size and two instances of Less.

BoundedList works as follows. Every bound is build up by declaring a data-type representing the new bound. The instance of size only returns the size as an Int. The first instance of Less is for telling the typechecker that this bound is greater than the largest smaller bound. The second instance of Less is used by the typechecker to construct a chain of instances if there is no hardcoded instance available. This way the type checker can determine if a bound is smaller/greater then any other bound.

This inductive approach gives the complexity O(n) on the number of instances and very short type checking times compared to an O(n^2) implementation.

BoundedList also comes with a few utility function for manipulation an contructing bounded lists.

To be noted: Since each bound is a unique type: Explicit shrink and/or grow is needed before using (==). BoundedList does not have an instance of Ordering. (This might change)

Synopsis
shrink :: (Size n, Size m) => BoundedList a n -> Maybe (BoundedList a m)
grow :: LessEq n m => BoundedList a n -> BoundedList a m
trunc :: Size n => [a] -> BoundedList a n
listBound :: Size n => BoundedList a n -> Int
toBounded :: Size n => [a] -> Maybe (BoundedList a n)
fromBounded :: Size n => BoundedList a n -> [a]
class Size n
data BoundedList a n
data N0
data N1
data N2
data N3
data N4
data N5
data N6
data N7
data N8
data N9
data N10
data N11
data N12
data N13
data N14
data N15
data N16
data N17
data N18
data N19
data N20
data N21
data N22
data N23
data N24
data N25
data N26
data N27
data N28
data N29
data N30
data N31
data N32
data N33
data N34
data N35
data N36
data N37
data N38
data N39
data N40
data N41
data N42
data N43
data N44
data N45
data N46
data N47
data N48
data N49
data N50
data N51
data N52
data N53
data N54
data N55
data N56
data N57
data N58
data N59
data N60
data N61
data N62
data N63
data N64
data N65
data N66
data N67
data N68
data N69
data N70
data N71
data N72
data N73
data N74
data N75
data N76
data N77
data N78
data N79
data N80
data N81
data N82
data N83
data N84
data N85
data N86
data N87
data N88
data N89
data N90
data N91
data N92
data N93
data N94
data N95
data N96
data N97
data N98
data N99
data N100
data N101
data N102
data N103
data N104
data N105
data N106
data N107
data N108
data N109
data N110
data N111
data N112
data N113
data N114
data N115
data N116
data N117
data N118
data N119
data N120
data N121
data N122
data N123
data N124
data N125
data N126
data N127
data N128
data N129
data N130
data N131
data N132
data N133
data N134
data N135
data N136
data N137
data N138
data N139
data N140
data N141
data N142
data N143
data N144
data N145
data N146
data N147
data N148
data N149
data N150
data N151
data N152
data N153
data N154
data N155
data N156
data N157
data N158
data N159
data N160
data N161
data N162
data N163
data N164
data N165
data N166
data N167
data N168
data N169
data N170
data N171
data N172
data N173
data N174
data N175
data N176
data N177
data N178
data N179
data N180
data N181
data N182
data N183
data N184
data N185
data N186
data N187
data N188
data N189
data N190
data N191
data N192
data N193
data N194
data N195
data N196
data N197
data N198
data N199
data N200
data N201
data N202
data N203
data N204
data N205
data N206
data N207
data N208
data N209
data N210
data N211
data N212
data N213
data N214
data N215
data N216
data N217
data N218
data N219
data N220
data N221
data N222
data N223
data N224
data N225
data N226
data N227
data N228
data N229
data N230
data N231
data N232
data N233
data N234
data N235
data N236
data N237
data N238
data N239
data N240
data N241
data N242
data N243
data N244
data N245
data N246
data N247
data N248
data N249
data N250
data N251
data N252
data N253
data N254
data N255
data N65535
Documentation
shrink :: (Size n, Size m) => BoundedList a n -> Maybe (BoundedList a m)Source
Shrinks the BoundedList supplied if it can do so without truncating the list. Returns Nothing if the list inside was to long.
grow :: LessEq n m => BoundedList a n -> BoundedList a mSource
Takes a BoundedList add grows it size.
trunc :: Size n => [a] -> BoundedList a nSource
Takes a list and transforms it to a BoundedList. If the list doesn'n fit, the list is truncated to make it fit into the bounded list.
listBound :: Size n => BoundedList a n -> IntSource
Returns the length of a BoundedList.
toBounded :: Size n => [a] -> Maybe (BoundedList a n)Source
Takes a list and transforms it to a BoundedList. If the list doesn't fit, Nothing is returned.
fromBounded :: Size n => BoundedList a n -> [a]Source
Takes a BoundedList and return the list inside.
class Size n Source
data BoundedList a n Source
data N0 Source
data N1 Source
data N2 Source
data N3 Source
data N4 Source
data N5 Source
data N6 Source
data N7 Source
data N8 Source
data N9 Source
data N10 Source
data N11 Source
data N12 Source
data N13 Source
data N14 Source
data N15 Source
data N16 Source
data N17 Source
data N18 Source
data N19 Source
data N20 Source
data N21 Source
data N22 Source
data N23 Source
data N24 Source
data N25 Source
data N26 Source
data N27 Source
data N28 Source
data N29 Source
data N30 Source
data N31 Source
data N32 Source
data N33 Source
data N34 Source
data N35 Source
data N36 Source
data N37 Source
data N38 Source
data N39 Source
data N40 Source
data N41 Source
data N42 Source
data N43 Source
data N44 Source
data N45 Source
data N46 Source
data N47 Source
data N48 Source
data N49 Source
data N50 Source
data N51 Source
data N52 Source
data N53 Source
data N54 Source
data N55 Source
data N56 Source
data N57 Source
data N58 Source
data N59 Source
data N60 Source
data N61 Source
data N62 Source
data N63 Source
data N64 Source
data N65 Source
data N66 Source
data N67 Source
data N68 Source
data N69 Source
data N70 Source
data N71 Source
data N72 Source
data N73 Source
data N74 Source
data N75 Source
data N76 Source
data N77 Source
data N78 Source
data N79 Source
data N80 Source
data N81 Source
data N82 Source
data N83 Source
data N84 Source
data N85 Source
data N86 Source
data N87 Source
data N88 Source
data N89 Source
data N90 Source
data N91 Source
data N92 Source
data N93 Source
data N94 Source
data N95 Source
data N96 Source
data N97 Source
data N98 Source
data N99 Source
data N100 Source
data N101 Source
data N102 Source
data N103 Source
data N104 Source
data N105 Source
data N106 Source
data N107 Source
data N108 Source
data N109 Source
data N110 Source
data N111 Source
data N112 Source
data N113 Source
data N114 Source
data N115 Source
data N116 Source
data N117 Source
data N118 Source
data N119 Source
data N120 Source
data N121 Source
data N122 Source
data N123 Source
data N124 Source
data N125 Source
data N126 Source
data N127 Source
data N128 Source
data N129 Source
data N130 Source
data N131 Source
data N132 Source
data N133 Source
data N134 Source
data N135 Source
data N136 Source
data N137 Source
data N138 Source
data N139 Source
data N140 Source
data N141 Source
data N142 Source
data N143 Source
data N144 Source
data N145 Source
data N146 Source
data N147 Source
data N148 Source
data N149 Source
data N150 Source
data N151 Source
data N152 Source
data N153 Source
data N154 Source
data N155 Source
data N156 Source
data N157 Source
data N158 Source
data N159 Source
data N160 Source
data N161 Source
data N162 Source
data N163 Source
data N164 Source
data N165 Source
data N166 Source
data N167 Source
data N168 Source
data N169 Source
data N170 Source
data N171 Source
data N172 Source
data N173 Source
data N174 Source
data N175 Source
data N176 Source
data N177 Source
data N178 Source
data N179 Source
data N180 Source
data N181 Source
data N182 Source
data N183 Source
data N184 Source
data N185 Source
data N186 Source
data N187 Source
data N188 Source
data N189 Source
data N190 Source
data N191 Source
data N192 Source
data N193 Source
data N194 Source
data N195 Source
data N196 Source
data N197 Source
data N198 Source
data N199 Source
data N200 Source
data N201 Source
data N202 Source
data N203 Source
data N204 Source
data N205 Source
data N206 Source
data N207 Source
data N208 Source
data N209 Source
data N210 Source
data N211 Source
data N212 Source
data N213 Source
data N214 Source
data N215 Source
data N216 Source
data N217 Source
data N218 Source
data N219 Source
data N220 Source
data N221 Source
data N222 Source
data N223 Source
data N224 Source
data N225 Source
data N226 Source
data N227 Source
data N228 Source
data N229 Source
data N230 Source
data N231 Source
data N232 Source
data N233 Source
data N234 Source
data N235 Source
data N236 Source
data N237 Source
data N238 Source
data N239 Source
data N240 Source
data N241 Source
data N242 Source
data N243 Source
data N244 Source
data N245 Source
data N246 Source
data N247 Source
data N248 Source
data N249 Source
data N250 Source
data N251 Source
data N252 Source
data N253 Source
data N254 Source
data N255 Source
data N65535 Source
Produced by Haddock version 2.6.1