haskelldb-2.2.4: A library of combinators for generating and executing SQL statements.

CopyrightHWT Group (c) 2003, haskelldb-users@lists.sourceforge.net
LicenseBSD-style
Maintainerhaskelldb-users@lists.sourceforge.net
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell98

Database.HaskellDB.BoundedList

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

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 m Source

Takes a BoundedList add grows it size.

trunc :: Size n => [a] -> BoundedList a n Source

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 -> Int Source

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

Minimal complete definition

size

Instances

Size N65535 
Size N255 
Size N254 
Size N253 
Size N252 
Size N251 
Size N250 
Size N249 
Size N248 
Size N247 
Size N246 
Size N245 
Size N244 
Size N243 
Size N242 
Size N241 
Size N240 
Size N239 
Size N238 
Size N237 
Size N236 
Size N235 
Size N234 
Size N233 
Size N232 
Size N231 
Size N230 
Size N229 
Size N228 
Size N227 
Size N226 
Size N225 
Size N224 
Size N223 
Size N222 
Size N221 
Size N220 
Size N219 
Size N218 
Size N217 
Size N216 
Size N215 
Size N214 
Size N213 
Size N212 
Size N211 
Size N210 
Size N209 
Size N208 
Size N207 
Size N206 
Size N205 
Size N204 
Size N203 
Size N202 
Size N201 
Size N200 
Size N199 
Size N198 
Size N197 
Size N196 
Size N195 
Size N194 
Size N193 
Size N192 
Size N191 
Size N190 
Size N189 
Size N188 
Size N187 
Size N186 
Size N185 
Size N184 
Size N183 
Size N182 
Size N181 
Size N180 
Size N179 
Size N178 
Size N177 
Size N176 
Size N175 
Size N174 
Size N173 
Size N172 
Size N171 
Size N170 
Size N169 
Size N168 
Size N167 
Size N166 
Size N165 
Size N164 
Size N163 
Size N162 
Size N161 
Size N160 
Size N159 
Size N158 
Size N157 
Size N156 
Size N155 
Size N154 
Size N153 
Size N152 
Size N151 
Size N150 
Size N149 
Size N148 
Size N147 
Size N146 
Size N145 
Size N144 
Size N143 
Size N142 
Size N141 
Size N140 
Size N139 
Size N138 
Size N137 
Size N136 
Size N135 
Size N134 
Size N133 
Size N132 
Size N131 
Size N130 
Size N129 
Size N128 
Size N127 
Size N126 
Size N125 
Size N124 
Size N123 
Size N122 
Size N121 
Size N120 
Size N119 
Size N118 
Size N117 
Size N116 
Size N115 
Size N114 
Size N113 
Size N112 
Size N111 
Size N110 
Size N109 
Size N108 
Size N107 
Size N106 
Size N105 
Size N104 
Size N103 
Size N102 
Size N101 
Size N100 
Size N99 
Size N98 
Size N97 
Size N96 
Size N95 
Size N94 
Size N93 
Size N92 
Size N91 
Size N90 
Size N89 
Size N88 
Size N87 
Size N86 
Size N85 
Size N84 
Size N83 
Size N82 
Size N81 
Size N80 
Size N79 
Size N78 
Size N77 
Size N76 
Size N75 
Size N74 
Size N73 
Size N72 
Size N71 
Size N70 
Size N69 
Size N68 
Size N67 
Size N66 
Size N65 
Size N64 
Size N63 
Size N62 
Size N61 
Size N60 
Size N59 
Size N58 
Size N57 
Size N56 
Size N55 
Size N54 
Size N53 
Size N52 
Size N51 
Size N50 
Size N49 
Size N48 
Size N47 
Size N46 
Size N45 
Size N44 
Size N43 
Size N42 
Size N41 
Size N40 
Size N39 
Size N38 
Size N37 
Size N36 
Size N35 
Size N34 
Size N33 
Size N32 
Size N31 
Size N30 
Size N29 
Size N28 
Size N27 
Size N26 
Size N25 
Size N24 
Size N23 
Size N22 
Size N21 
Size N20 
Size N19 
Size N18 
Size N17 
Size N16 
Size N15 
Size N14 
Size N13 
Size N12 
Size N11 
Size N10 
Size N9 
Size N8 
Size N7 
Size N6 
Size N5 
Size N4 
Size N3 
Size N2 
Size N1 
Size N0 

data BoundedList a n Source

Instances

Size n => ShowConstant (BoundedString n) 
Size n => ExprType (BoundedString n) 
Size n => GetValue (Maybe (BoundedString n)) 
Size n => GetValue (BoundedString n) 
(Size n, Eq a) => Eq (BoundedList a n) 
(Show a, Size n) => Show (BoundedList a n) 
Typeable (* -> * -> *) BoundedList 

data N0 Source

Instances

data N1 Source

Instances

data N2 Source

Instances

data N3 Source

Instances

data N4 Source

Instances

data N5 Source

Instances

data N6 Source

Instances

data N7 Source

Instances

data N8 Source

Instances

data N9 Source

Instances

data N10 Source

Instances

data N11 Source

Instances

data N12 Source

Instances

data N13 Source

Instances

data N14 Source

Instances

data N15 Source

Instances

data N16 Source

Instances

data N17 Source

Instances

data N18 Source

Instances

data N19 Source

Instances

data N20 Source

Instances

data N21 Source

Instances

data N22 Source

Instances

data N23 Source

Instances

data N24 Source

Instances

data N25 Source

Instances

data N26 Source

Instances

data N27 Source

Instances

data N28 Source

Instances

data N29 Source

Instances

data N30 Source

Instances

data N31 Source

Instances

data N32 Source

Instances

data N33 Source

Instances

data N34 Source

Instances

data N35 Source

Instances

data N36 Source

Instances

data N37 Source

Instances

data N38 Source

Instances

data N39 Source

Instances

data N40 Source

Instances

data N41 Source

Instances

data N42 Source

Instances

data N43 Source

Instances

data N44 Source

Instances

data N45 Source

Instances

data N46 Source

Instances

data N47 Source

Instances

data N48 Source

Instances

data N49 Source

Instances

data N50 Source

Instances

data N51 Source

Instances

data N52 Source

Instances

data N53 Source

Instances

data N54 Source

Instances

data N55 Source

Instances

data N56 Source

Instances

data N57 Source

Instances

data N58 Source

Instances

data N59 Source

Instances

data N60 Source

Instances

data N61 Source

Instances

data N62 Source

Instances

data N63 Source

Instances

data N64 Source

Instances

data N65 Source

Instances

data N66 Source

Instances

data N67 Source

Instances

data N68 Source

Instances

data N69 Source

Instances

data N70 Source

Instances

data N71 Source

Instances

data N72 Source

Instances

data N73 Source

Instances

data N74 Source

Instances

data N75 Source

Instances

data N76 Source

Instances

data N77 Source

Instances

data N78 Source

Instances

data N79 Source

Instances

data N80 Source

Instances

data N81 Source

Instances

data N82 Source

Instances

data N83 Source

Instances

data N84 Source

Instances

data N85 Source

Instances

data N86 Source

Instances

data N87 Source

Instances

data N88 Source

Instances

data N89 Source

Instances

data N90 Source

Instances

data N91 Source

Instances

data N92 Source

Instances

data N93 Source

Instances

data N94 Source

Instances

data N95 Source

Instances

data N96 Source

Instances

data N97 Source

Instances

data N98 Source

Instances

data N99 Source

Instances

data N100 Source

Instances

data N101 Source

Instances

data N102 Source

Instances

data N103 Source

Instances

data N104 Source

Instances

data N105 Source

Instances

data N106 Source

Instances

data N107 Source

Instances

data N108 Source

Instances

data N109 Source

Instances

data N110 Source

Instances

data N111 Source

Instances

data N112 Source

Instances

data N113 Source

Instances

data N114 Source

Instances

data N115 Source

Instances

data N116 Source

Instances

data N117 Source

Instances

data N118 Source

Instances

data N119 Source

Instances

data N120 Source

Instances

data N121 Source

Instances

data N122 Source

Instances

data N123 Source

Instances

data N124 Source

Instances

data N125 Source

Instances

data N126 Source

Instances

data N127 Source

Instances

data N128 Source

Instances

data N129 Source

Instances

data N130 Source

Instances

data N131 Source

Instances

data N132 Source

Instances

data N133 Source

Instances

data N134 Source

Instances

data N135 Source

Instances

data N136 Source

Instances

data N137 Source

Instances

data N138 Source

Instances

data N139 Source

Instances

data N140 Source

Instances

data N141 Source

Instances

data N142 Source

Instances

data N143 Source

Instances

data N144 Source

Instances

data N145 Source

Instances

data N146 Source

Instances

data N147 Source

Instances

data N148 Source

Instances

data N149 Source

Instances

data N150 Source

Instances

data N151 Source

Instances

data N152 Source

Instances

data N153 Source

Instances

data N154 Source

Instances

data N155 Source

Instances

data N156 Source

Instances

data N157 Source

Instances

data N158 Source

Instances

data N159 Source

Instances

data N160 Source

Instances

data N161 Source

Instances

data N162 Source

Instances

data N163 Source

Instances

data N164 Source

Instances

data N165 Source

Instances

data N166 Source

Instances

data N167 Source

Instances

data N168 Source

Instances

data N169 Source

Instances

data N170 Source

Instances

data N171 Source

Instances

data N172 Source

Instances

data N173 Source

Instances

data N174 Source

Instances

data N175 Source

Instances

data N176 Source

Instances

data N177 Source

Instances

data N178 Source

Instances

data N179 Source

Instances

data N180 Source

Instances

data N181 Source

Instances

data N182 Source

Instances

data N183 Source

Instances

data N184 Source

Instances

data N185 Source

Instances

data N186 Source

Instances

data N187 Source

Instances

data N188 Source

Instances

data N189 Source

Instances

data N190 Source

Instances

data N191 Source

Instances

data N192 Source

Instances

data N193 Source

Instances

data N194 Source

Instances

data N195 Source

Instances

data N196 Source

Instances

data N197 Source

Instances

data N198 Source

Instances

data N199 Source

Instances

data N200 Source

Instances

data N201 Source

Instances

data N202 Source

Instances

data N203 Source

Instances

data N204 Source

Instances

data N205 Source

Instances

data N206 Source

Instances

data N207 Source

Instances

data N208 Source

Instances

data N209 Source

Instances

data N210 Source

Instances

data N211 Source

Instances

data N212 Source

Instances

data N213 Source

Instances

data N214 Source

Instances

data N215 Source

Instances

data N216 Source

Instances

data N217 Source

Instances

data N218 Source

Instances

data N219 Source

Instances

data N220 Source

Instances

data N221 Source

Instances

data N222 Source

Instances

data N223 Source

Instances

data N224 Source

Instances

data N225 Source

Instances

data N226 Source

Instances

data N227 Source

Instances

data N228 Source

Instances

data N229 Source

Instances

data N230 Source

Instances

data N231 Source

Instances

data N232 Source

Instances

data N233 Source

Instances

data N234 Source

Instances

data N235 Source

Instances

data N236 Source

Instances

data N237 Source

Instances

data N238 Source

Instances

data N239 Source

Instances

data N240 Source

Instances

data N241 Source

Instances

data N242 Source

Instances

data N243 Source

Instances

data N244 Source

Instances

data N245 Source

Instances

data N246 Source

Instances

data N247 Source

Instances

data N248 Source

Instances

data N249 Source

Instances

data N250 Source

Instances

data N251 Source

Instances

data N252 Source

Instances

data N253 Source

Instances

data N254 Source

Instances

data N255 Source

Instances

data N65535 Source

Instances