7/lJ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI non-portable experimentalEdward Kmett <ekmett@gmail.com>None# Type level key types Value-level key types dSelect a smaller, updateable subset of the rows of a table using an index or an arbitrary function. "Delete selected rows from a table  p cmp a t "a J ( p cmp a) = tSearch inverted indices ",Group by a given key or arbitrary function. #Every # has a   key and may have  ,    or  keys, plus their variants. &&This is used to store a single index. 1<This class describes how to index a user-defined data type. 2The primary key type 3Used to store indices 4%The type used internally for columns 5Extract the value of a 4 6Every # has one   4 77... and so if you find one, it had better be that one! 8 Construct a 3% given a function from key to index. 9Lookup an index in a 3 :Loop over each index in a 3 ;UAdjust a record using meta-information about the table allowing for auto-increments. <This lets you define IE to increment to 1 greater than the existing maximum key in a table. In order to support this you need a numeric primary key, and the ability to update the primary key in a record, indicated by a  lens to the field. 6To enable auto-increment for a table with primary key primaryKeyField, set: I = < primaryKeyFieldK!Find the primary key index a tab =Construct an empty relation >&Check to see if the relation is empty ?'Construct a relation with a single row LNReturn the set of rows that would be delete by deleting or inserting this row @]Delete this row from the database. This will remove any row that collides with the specified & row on any primary or candidate key. A3Insert a row into a relation, removing collisions. B3Insert a row into a relation, removing collisions. CRetrieve a row count. DConvert a list to and from a #. WThe real isomorphism laws hold if the original list makes no use of the auto-increment [ functionality of the table, has no duplicates and is sorted according to the primary key.  However,  M D N D "a Oalways holds. E?Traverse all of the rows in a table without changing any types FRTraverse all of the rows in a table, potentially changing table types completely. GBuild up a table from a list H,Generate a row with an auto-incremented key PSimple (key, value) pairs QRST  !"#$%&'()*+,-./0123456789:;<KUVWX=>?L@ABCDEFGHIYZ[\]^_`abcdefPghijklmnopqrstuvwxyz{|}~R  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ#%$123456789:;=?DG>C !"AB@FEIH< &0/.-,+*)('qQRST   !"#%$& 0/.-,+*)('1 23456789:;<KUVWX=>?L@ABCDEFGHIYZ[\]^_`abcdefPghijklmnopqrstuvwxyz{|}~           !"#$%&'()*+,-./0123456789:;<=>?@ABCD@EFGHIGHJKLLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ tables-0.3 Data.TableAuto IsKeyTypekeyType InvertedHash InvertedIntInvertedSupplementalHashSupplementalInt Supplemental CandidateHash CandidateInt CandidatePrimaryKeyTypeWithwith deleteWithWithalwithAnywithAll deleteWithAny deleteWithAllGroupgroupTable EmptyTableAnIndexSupplementalMapSupplementalHashMapSupplementalIntMap InvertedMapInvertedHashMapInvertedIntMap CandidateMapCandidateHashMapCandidateIntMap PrimaryMapTabularPKTTabKeyfetchprimary primarilymkTabixTabforTabautoTab autoIncrementemptynull singletondeleteinsertinsert'counttablerows'rowsfromListautoautoKey lens-3.8.7.3Control.Lens.Setterset primaryMap collisionsControl.Lens.IsofrombaseGHC.Base.id $fTabular(,)ValueHasValuevaluefromListConstr tableDataTypedeleteCollisionsemptyTab$fTabularValue$fHasValuepqfValueValueab$fComonadApplyValue$fComonadValue$fMonadFixValue $fMonadValue$fApplicativeValue$fWrappedabValueValue $fIxedfValue$fContainsfValue$fEachfValueValueab$fField1ValueValueab$fTabularIdentity$fHasValuepqfIdentityIdentityab$fHasValuepqf(,)(,)ab $fTabularAuto $fComonadAuto$fTraversableWithIndexIntAuto$fFoldableWithIndexIntAuto$fFunctorWithIndexIntAuto$fHasValuepqfAutoAutoab$fEachfAutoAutoab$fField2AutoAutoab$fField1AutoAutoIntInt$fIsKeyTypeInvertedHasht$fIsKeyTypeInvertedIntIntSet$fIsKeyTypeInvertedt$fIsKeyTypeSupplementalHasha$fIsKeyTypeSupplementalInta$fIsKeyTypeSupplementala$fIsKeyTypeCandidateHasha$fIsKeyTypeCandidateInta$fIsKeyTypeCandidatea$fIsKeyTypePrimarya $fWithKeyt $fWithKeyt0 $fWithKeyt1 $fWithKeyt2 $fWithKeyt3 $fWithKeyt4 $fWithKeyt5 $fWith(->)t$fWithalKey[]t$fWithalKey[]t0$fWithalKey[]t1$fWithal(->)[]t $fGroupfKeyta$fGroupfKeyta0$fGroupfKeyta1$fGroupfKeyta2$fGroupfKeyta3$fGroupfKeyta4$fGroupfKeyta5$fGroupfKeyta6$fGroupfKeyta7$fGroupfKeyta8$fGroupf(->)ta$fEachfTableTableab $fAtTable $fIxedfTable$fContainsfTable$fFoldableTable $fReadTable $fShowTable $fOrdTable $fEqTable $fMonoidTable$fSafeCopyTable$fSerializeTable $fBinaryTable $fDataTableValueTabVal IdentityTabIdKVTabFstAutoTabAutoKey