Îõ³h*,Õ*å      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcd0.1.2.0ÆProvides useful utilities for operating with mutable primitive arrays.$(c) klapaucius, swamp_agr, 2016-2021BSD3 Safe-InferredB,Provides arch-dependent mask for hashtables.$(c) klapaucius, swamp_agr, 2016-2021BSD3 Safe-InferredEvector-hashtablese! mask. For 32-bit it is equal to  0x7FFFFFFF . Otherwise, 0x7FFFFFFFFFFFFFFF.6Provides internals of hashtables and set of utilities.$(c) klapaucius, swamp_agr, 2016-2021BSD3 Safe-Inferred %&ÃËÍÛ(6. vector-hashtablesFor 64-bit architectures  & is a prime number such that for each n >= 0 it holds that n `f`   = (n *  ) `g ` (64 + s).vector-hashtablesÔRepresents immutable dictionary as collection of immutable arrays and vectors. See 4 and 5, for conversions from/to mutable dictionary.vector-hashtablesÉRepresents collection of hashtable internal primitive arrays and vectors. hash codes,references to the next element,buckets,keys and values.$vector-hashtables Single-element mutable array of Í with primitive state token parameterized with state, keys and values types.Different flavors of h< could be used for keys and values. It's preferable to use Data.Vector.Unboxed.Mutable or Data.Vector.Storable.MutableÞ if possible. Otherwise, if you must use boxed vectors, consider employing strict ones from  5https://hackage.haskell.org/package/strict-containersstrict-containers0 to eliminate potential accumulation of thunks.Example3import qualified Data.Vector.Storable.Mutable as VM3import qualified Data.Vector.Unboxed.Mutable as UMimport Data.Vector.HashtablesÈtype HashTable k v = Dictionary (PrimState IO) VM.MVector k UM.MVector v'vector-hashtables Alias for MutablePrimArray s e.+vector-hashtablesO(1) in the best case, O(n)Å in the worst case. Find dictionary entry by given key in immutable . If entry not found -1 returned.,vector-hashtablesInfix version of  unsafeRead.-vector-hashtablesInfix version of  unsafeIndex..vector-hashtablesInfix version of  unsafeWrite./vector-hashtablesInfix version of  readPrimArray.0vector-hashtablesInfix version of indexPrimArray.1vector-hashtablesInfix version of writePrimArray.2vector-hashtablesO(1) Dictionary with given capacity.3vector-hashtables$Create a copy of mutable dictionary.4vector-hashtablesO(1)‡ Unsafe convert a mutable dictionary to an immutable one without copying. The mutable dictionary may not be used after this operation.5vector-hashtablesO(1) Unsafely convert immutable  to a mutable $Ñ without copying. The immutable dictionary may not be used after this operation.6vector-hashtablesO(n) Retrieve list of keys from $.7vector-hashtablesO(n) Retrieve list of values from $.8vector-hashtablesO(1) in the best case, O(n)0 in the worst case. Find value by given key in $%. Throws an error if value not found.9vector-hashtablesO(1) in the best case, O(n)0 in the worst case. Find value by given key in $. Like 9 but return i if value not found.;vector-hashtablesO(1) in the best case, O(n)Ì in the worst case. Find dictionary entry by given key. If entry not found -1 returned.<vector-hashtablesO(1) in the best case, O(n) in the worst case. Same as ; , but for .=vector-hashtablesO(1) in the best case, O(n)ý in the worst case. Insert key and value in dictionary by key's hash. If entry with given key found value will be replaced.Bvector-hashtablesO(1) in the best case, O(n)' in the worst case. Delete entry from $ by given key.Dvector-hashtablesO(1) in the best case, O(n)0 in the worst case. Find value by given key in $. Like E but return i if value not found.Evector-hashtablesO(1) in the best case, O(n)0 in the worst case. Find value by given key in $%. Throws an error if value not found.Fvector-hashtablesO(1) in the best case, O(n)Á in the worst case. Lookup the index of a key, which is its zero-based index in the sequence sorted by keys. The index is a number from 0 up to, but not including, the size of the dictionary.Gvector-hashtablesO(1) Return j if dictionary is empty, k otherwise.Hvector-hashtablesO(1)6 Return the number of non-empty entries of dictionary.Ivector-hashtablesO(1) Return the number of non-empty entries of dictionary. Synonym of H.Jvector-hashtablesO(1) in the best case, O(n) in the worst case. Return j4 if the specified key is present in the dictionary, k otherwise.Kvector-hashtablesO(1) in the best case, O(n)$ in the worst case. The expression K ht def k returns the value at key k or returns default value def( when the key is not in the dictionary.Lvector-hashtablesO(1) in the best case, O(n)% in the worst case. The expression (L ht f k) updates or inserts the value x at k.It's a responsibility of h vsœ to force evaluation of the updated value. Unboxed / storable vectors do it automatically. If you use boxed vectors, consider employing strict ones from  5https://hackage.haskell.org/package/strict-containersstrict-containers0 to eliminate potential accumulation of thunks. ælet f _ = "c" ht <- fromList [(5,"a"), (3,"b")] upsert ht f 7 toList ht [(3, "b"), (5, "a"), (7, "c")] Îht <- fromList [(5,"a"), (3,"b")] upsert ht f 5 toList ht [(3, "b"), (5, "c")]Mvector-hashtablesO(1) in the best case, O(n)% in the worst case. The expression (M ht f k) alters the value x at k, or absence thereof. M7 can be used to insert, delete, or update a value in a $.It's a responsibility of h vsœ to force evaluation of the updated value. Unboxed / storable vectors do it automatically. If you use boxed vectors, consider employing strict ones from  5https://hackage.haskell.org/package/strict-containersstrict-containers0 to eliminate potential accumulation of thunks. ßlet f _ = Nothing ht <- fromList [(5,"a"), (3,"b")] alter ht f 7 toList ht [(3, "b"), (5, "a")] Âht <- fromList [(5,"a"), (3,"b")] alter ht f 5 toList ht [(3 "b")] êlet f _ = Just "c" ht <- fromList [(5,"a"), (3,"b")] alter ht f 7 toList ht [(3, "b"), (5, "a"), (7, "c")] Íht <- fromList [(5,"a"), (3,"b")] alter ht f 5 toList ht [(3, "b"), (5, "c")]Nvector-hashtablesO(1) in the best case, O(n)% in the worst case. The expression (N ht f k) alters the value x at k, or absence thereof. N7 can be used to insert, delete, or update a value in a $ in the same l m.Ovector-hashtables O(min n m) in the best case, O(min n m * max n m)‰ in the worst case. The union of two maps. If a key occurs in both maps, the mapping from the first will be the mapping in the result.Pvector-hashtables O(min n m) in the best case, O(min n m * max n m)÷ in the worst case. The union of two maps. The provided function (first argument) will be used to compute the result.Qvector-hashtables O(min n m) in the best case, O(min n m * max n m)– in the worst case. The union of two maps. If a key occurs in both maps, the provided function (first argument) will be used to compute the result.Rvector-hashtablesO(n) in the best case, O(n * m)î in the worst case. Difference of two tables. Return elements of the first table not existing in the second.Svector-hashtablesO(n) in the best case, O(n * m)¯ in the worst case. Difference with a combining function. When two equal keys are encountered, the combining function is applied to the values of these keys. If it returns iÄ, the element is discarded (proper set difference). If it returns (m y+), the element is updated with a new value y.Tvector-hashtablesO(n) in the best case, O(n * m)ñ in the worst case. Intersection of two maps. Return elements of the first map for keys existing in the second.Uvector-hashtablesÿIntersection of two maps. If a key occurs in both maps the provided function is used to combine the values from the two maps.Vvector-hashtablesÿIntersection of two maps. If a key occurs in both maps the provided function is used to combine the values from the two maps.Wvector-hashtablesO(n) Convert list to a $. Xvector-hashtablesO(n) Convert $ to a list.Yvector-hashtables¯This data is auto-generated by GenPrimes.hs. The vector contains tuples (p, m, s) such that p is prime and (assuming 64-bit architecture) for every n >= 0 it holds that n `f` p = (n * m) `g7` (64 + s), enabling faster computation of remainders.>vector-hashtables+Target bucket, key's hash modulo table sizevector-hashtables Key's hashvector-hashtablesKeyvector-hashtablesValuevector-hashtables MutVar with vector-hashtables itself?vector-hashtables+Target bucket, key's hash modulo table sizevector-hashtables Key's hashvector-hashtablesKeyvector-hashtablesValuevector-hashtables MutVar with vector-hashtables itselfAvector-hashtables The original vector-hashtables Key's hashvector-hashtablesKeyvector-hashtablesValueÓ # "!$&%'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[Ó'$&%# "!()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ [:Provides hashtables, basic interface and set of utilities.$(c) klapaucius, swamp_agr, 2016-2021BSD3 Safe-Inferred)jÓ$%&+23GI67DE=BLMN;OPQRSTUV45WX!" #?@ABCDEFG HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghigjklmngopdeqderstugovdwxstystzst{st|st}st~stst€stst‚stƒst„st…st†st‡stˆst‰stŠst‹stŒststŽststst‘st’st“st”st•–0vector-hashtables-0.1.2.0-6pEdWokP8chGqIdDfmwjtMData.Primitive.PrimArray.Utils$Data.Vector.Hashtables.Internal.MaskData.Vector.Hashtables.Internalvector-hashtablesData.Vector.Hashtables replicateclone unsafeFreeze unsafeThawgrowWithgrowNoZfreezelengthmaskFastRemfrmPrime _frmMulHi _frmShift DeleteEntry deleteEntryFrozenDictionary fhashCodefnextfbucketscountfreeList freeCountfkeyfvaluefremSize Dictionary_ DictionaryhashCodenextbucketsrefskeyvalueremSizeDRefgetDRefIntArraygetCount getFreeList getFreeCountfindElem!~!.~<~~!!.<~ initializekeysvaluesatat' atWithOrElse findEntry findEntry_insertinsertWithIndex addOrResizeaddresizedeletedeleteWithIndexlookuplookup' lookupIndexnullsizememberfindWithDefaultupsertalteralterMunion unionWith unionWithKey differencedifferenceWith intersectionintersectionWithintersectionWithKeyfromListtoListprimesWithFastRem getFastRemfastRem$fDeleteEntryMVector$fDeleteEntryMVector0$fDeleteEntryMVector1$fEqFrozenDictionary$fOrdFrozenDictionary$fShowFrozenDictionary $fEqFastRem $fOrdFastRem $fShowFastRemghc-prim GHC.TypesIntbaseGHC.RealquotGHC.BitsshiftR&vector-0.13.1.0-3iwp0ZpVFXd2eoMdapVrKn Data.Vector.Generic.Mutable.BaseMVector GHC.MaybeNothingTrueFalse(primitive-0.9.0.0-2Ut0u6h4ou624O572IFc4SControl.Monad.Primitive PrimMonadJustGHC.Prim RealWorld MonadPrimBase MonadPrimPrimBaseinternal PrimState primitive noDuplicate primitive_liftPrim primToPrimprimToIOprimToSTioToPrimstToPrimunsafePrimToPrimunsafePrimToSTunsafePrimToIOunsafeSTToPrimunsafeIOToPrimunsafeInlinePrimunsafeInlineIOunsafeInlineSTtouch touchUnlifted keepAlivekeepAliveUnliftedevalPrimunsafeInterleaveunsafeDupableInterleave