!>J:      SafeSafe8None-.=?@ACHMUVX memdb ? description. Currently, there are two supported index types:   and !5. Both can be specified using the utility functions  word32Index and byteStringIndex, respectively.LFor example, one might define indexes over a datatype in the following way: !data Person = Person { name :: " , age :: # } deriving (Generic, $) personIndexes = byteStringIndex #nameIndex ( . name) $  word32Index #ageIndex (% . age)  unindexed TComposite or computed indexes can be built by supplying an appropriate function to   or  , e.g: personIndexes = byteStringIndex& #nameAndAgePlusOneIndex (\p ->  (name p & ' (age p + 1)))  unindexed memdb2An immutable database containing elements of type a$, each one indexed according to an   description.Import Database.Immutable.Read for reading boxed values and Database.Immutable.Read.Unboxed for the unboxed variant. memdbType tying a typelevel ( to a value.  has an )O instance and can thus be created by using the overloaded labels syntax (i.e.  #someName ) when the OverloadedLabels GHC extension is enabled. memdb+Limit the number of elements read after an .memdbOffset into the database.*+,-./0 123 4 5 6 7None|memdbDCreata a database from a list. Databases can be created back using  .memdbSWrite data sequentially to a database file. Database files can be read back using  .An additional file  path.meta5 is produced holding the number of written elements.memdb?Writing function; the continuation can be called multiple timesmemdbFile path, must be writeablememdb?Writing function; the continuation can be called multiple times   None-.HUVX2memdbDefault  / description, specifying an unindexed database.memdbAdd a   index to an  2 description to be built when reading a database.memdbAdd a ! index to an  2 description to be built when reading a database.memdbCreate a database from a !2 and build up in-memory indexes according to the   description.memdbRRead a database from a file path and build up in-memory indexes according to the   description.memdb Index namememdbProjecting functionmemdbIndex computing functionmemdbIndexes descriptionmemdb Resulting   desctiption, inlcuding the new   indexmemdb Index namememdbProjecting functionmemdbIndex computing functionmemdbIndexes descriptionmemdb Resulting   desctiption, inlcuding the new ! indexmemdbSerialised elementsmemdb Element countmemdbpProgress indicating function, called with the number of elements currently read and the total count of elementsmemdbIndexes descriptionmemdb4Resulting database or a parse/deserializiation errormemdbFile path to databasememdbpProgress indicating function, called with the number of elements currently read and the total count of elementsmemdbIndexes descriptionmemdb4Resulting database or a parse/deserializiation error  (c) Philip Kamenarsky, 2018MITp.kamenarsky@gmail.com experimentalPOSIXNone-.HUVX9memdbO(1)6 Yield the database element at the specified position.memdbO(n)Q Yield a slice of the database. The database must contain at least i+n elements.memdbO(n) Lookup by index, n& being the count of returned elements.Example: Flookup personsDB #nameIndex "Phil" -- Return all elements named "Phil"memdb Index namememdb Index valuememdbDatabasememdbResulting items     Safe:89:;<=>?@     !"#$%&'(#)*+,-./0#12#)3#45+,6#789:;<=>??@ A B C D E F G HI$memdb-1.0.0.1-1cFh3XQAJPZ1w7ewkJP4gTMultimap.ByteStringMultimap.Word32Database.ImmutableDatabase.Immutable.ReadDatabase.Immutable.WriteDatabase.Immutable.InternalBCpackbyteStringIndex word32IndexcreateDBreadDB Paths_memdbMultimapnewinsertlookup Word32IndexByteStringIndexIndexesDBNameLimitgetLimitIdgetIdincIdaddLimitsubIdsfromListwriteDB unindexed!slicebaseGHC.WordWord32bytestring-0.10.8.2Data.ByteString.Internal ByteStringGHC.BaseStringghc-prim GHC.TypesInt%cereal-0.5.8.1-KRPM4Pfa6l3HK7sjbDz33xData.Serialize SerializeGHC.Real fromIntegral<>GHC.ShowshowSymbolGHC.OverloadedLabelsIsLabel InsertIndex insertIndex LookupIndex lookupIndex MapIndexesTrdIndexes'coerceIdversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName