!ebx0      !"#$%&'()*+,-./(c) Peter RobinsonBSD3 (see the file LICENSE)"Peter Robinson <pwr@lowerbound.io> provisional(non-portable (requires concurrency, stm)None@AX]#concurrent-hashtablewAn action to be executed atomically for the content of the chain (i.e. list) stored at a specific table index. Used in .concurrent-hashtableGConfiguration options that may affect the performance of the hash tableconcurrent-hashtablescale factor for resizingconcurrent-hashtable'load threshold for initiating resizing.concurrent-hashtable5maximum number of worker threads used during resizingconcurrent-hashtable8A thread-safe hash table that supports dynamic resizing. concurrent-hashtablevector of linked lists concurrent-hashtable"the current load of the hash table concurrent-hashtablethe configuration options concurrent-hashtableUsed for chain-hashing.concurrent-hashtablestores the items for this indexconcurrent-hashtableused internally for resizingconcurrent-hashtableCreate a new empty chain.concurrent-hashtableqDefault configuration: scale factor = 2.0; resizing threshold = 0.75; number of worker threads for resizing = 0; hash function = use 1 with a random salt.concurrent-hashtable3Creates a new hash table with an initial size. See  for more details. concurrent-hashtable|Creates a new hash table with the given initial vector size, scale factor 2.0, a resizing load threshold of 0.75, and we use as many threads for resizing as we have cores available. This will use a hash function with a (single) random salt. For security sensitive applications, you MUST supply your own hash function. (To be replaced by universal hashing in future versions.)concurrent-hashtable;Returns the size of the vector representing the hash table.concurrent-hashtable;Returns the size of the vector representing the hash table.concurrent-hashtablexIncreases the size of the hash table by scaling the current size it according to the _scaleFactor in the configuration.concurrent-hashtable5Lookup the value for the given key in the hash table.concurrent-hashtable'Used by various write-operations (e.g. , , ", J). Searches the hash table for the given key and then applies the given  to the contents of the chain.concurrent-hashtableInserts a key-value pair k,v into the hash table. Uses chain hashing to resolve collisions. If you want to update the entry only if it already exists, use D. If you want to update the entry only if it does *not* exist, use .concurrent-hashtable[Adds a key and value pair into the hash table only if the key does not exist yet. Returns 2t if the insertion was successful, i.e., the hash table does not yet contain this key. To get the same behaviour as , use 6. If you want to update an already-existing item, use .concurrent-hashtableUpdates the value for key k. If k< is not in the hash table, it skips the update and returns 3. concurrent-hashtable0Applies an update-function to the value for key k*. Returns the old value if it exists. If k& is not in the hash table, it returns 4.!concurrent-hashtable0Atomically replaces the value for the given key kF in the hash table with the new value. Returns the old value. Throws 5 if k is not in the hash table."concurrent-hashtableADeletes the entry for the given key from the hash table. Returns 25 if and only if an entry was deleted from the table.#concurrent-hashtableAtomically increment/decrement the table load value by adding the provided integer offest to the current value. Forks a thread that executes . if the load passes the configured threshold.$concurrent-hashtableThe load (i.e. number of stored items) in the table. Note that this is not synchronized for performance reasons and hence might be somewhat out of date if a lot of contention is happening.%concurrent-hashtableReturns an atomic snapshot of the hash table as a list of key-value pairs. If there is a lot of contention going on, this may be very inefficient.&concurrent-hashtableReturns the content of the hash table as a list of key-value pairs. This is *not* an atomic operation! If you need atomicity, use  readAssoc instead.'concurrent-hashtable Takes a key k and an assocation list ys(, and deletes the first entry with key k in ys. Used internally.(concurrent-hashtable,Atomically read the chain for the given key.)concurrent-hashtableQAtomically read the chain for the given index. (Warning: bounds are not checked.)*concurrent-hashtableQAtomically read the chain for the given index. (Warning: bounds are not checked.) concurrent-hashtableInitial size of the hash tableconcurrent-hashtableInitial size of the hash tableconcurrent-hashtablekey kconcurrent-hashtablevalue for key k if it existsconcurrent-hashtablekeyconcurrent-hashtableFAction that will be performed for the list of items at the key's indexconcurrent-hashtableReturns the result of the concurrent-hashtablekey kconcurrent-hashtablevalue vconcurrent-hashtablereturns 26 if and only if the size of the hash table has changedconcurrent-hashtablekeyconcurrent-hashtablevalueconcurrent-hashtablereturns 20 if and only if the key was not yet in the tableconcurrent-hashtablekeyconcurrent-hashtablevalueconcurrent-hashtablereturns 2! if and only if the key was found concurrent-hashtablekey kconcurrent-hashtableupdate-functionconcurrent-hashtablereturns the old value for key k if it existed!concurrent-hashtablekey kconcurrent-hashtable new valueconcurrent-hashtable old value"concurrent-hashtable!key of entry that will be deletedconcurrent-hashtablereturns 2R if and only if the size of the hash table has changed, i.e., an item was deleted#concurrent-hashtable+increment/decrement offset; can be negative,  !"#$%&'()*+,   !"#$%&'()*+(c) Peter RobinsonBSD3 (see the file LICENSE)"Peter Robinson <pwr@lowerbound.io> provisional(non-portable (requires concurrency, stm)NoneaU  !"$%& %& "!$SafebS6789:;<=>       !"#$%&'()*+,-./0123456789:89;2<=2>?@ABCDEFGH1concurrent-hashtable-0.1.8-Aef4B4qGBWSIvBylL7BxK5Data.HashTable.InternalData.MapinsertData.HashTablePaths_concurrent_hashtable STMActionConfig _scaleFactor _threshold_numResizeWorkers _hashFunc HashTable _chainsVecTV _totalLoad_configChain_itemsTV_migrationStatusTVMigrationStatus NotStartedOngoingFinished newChainIOmkDefaultConfignewnewWithDefaults readSizeIOreadSizeresizelookup genericModifyaddupdatemodify swapValuesdeleteatomicallyChangeLoadreadLoad readAssocs readAssocsIOdeleteFirstKeyreadChainForKeyIOreadChainForIndexIOreadChainForIndexdebug $fShowConfig$fShowMigrationStatus$fEqMigrationStatus $fEqChainbase GHC.Conc.SyncgetNumCapabilities'hashable-1.3.0.0-1RsrIcitxVDKffGN1TuMlmData.Hashable.Class hashWithSaltghc-prim GHC.TypesTrueFalse GHC.MaybeNothingGHC.IO.ExceptionAssertionFailedversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName