úÎ!AK=§"      !SafeüSafeRNone-.=?@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.memdbZero .memdb Increment .memdbAdd a   to an .memdb"Subtract two indexes, returning a  .,-./012 345 6 7 8 9NoneGmemdbDCreata 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-.HUVX3émemdbDefault  / 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-.HUVX<ÌmemdbO(1)4 Return number of records contained in the database.memdbO(1)7 Return the database element at the specified position. memdbO(n)R Return 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=‚:;<=>?@AB !    "#$%&'()*%+,-./012%34%+5%67-.8%9:;<=>?@AAB C D E F G H I JK$memdb-1.0.0.2-4s1DXjbSViqAClNTYSORhdMultimap.ByteStringMultimap.Word32Database.ImmutableDatabase.Immutable.ReadDatabase.Immutable.WriteDatabase.Immutable.InternalBCpackbyteStringIndex word32IndexcreateDBreadDB Paths_memdbMultimapnewinsertlookup Word32IndexByteStringIndexIndexesDBNameLimitgetLimitIdgetIdzeroIdincIdaddLimitsubIdsfromListwriteDB unindexedlength!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