úΚü”›5      !"#$%&'()*+,-./01234portable provisionaljohan.tibell@gmail.com"5678A non-empty list of key/ value pairs. 9:;<=>?@ABO(n); Insert at the head of the list to avoid copying the whole  list. CDEFGHIO(n^2) Left biased union. JKLMNOPQRSTUV56789:<=>ACDEGIKMOQSU57667899:<=>ACDEGIKMOQSUW?A SuffixMask stores a path to a Bin node in the hash map. The D uppermost set bit, the Mask, indicates the bit used to distinguish E hashes in the left and right subtrees. The lower-order bits (below C the highest set bit), the Suffix, are set the same way in all the C hashes contained in this subtree of the map. Thus, hashes in the B right subtree will match all the bits in the SuffixMask, but may D have set bits above the Mask. Hashes in the left subtree will not 9 match the Mask bit, but will match all the Suffix bits. XYAA map from keys to values. A map cannot contain duplicate keys; ( each key can map to at most one value. Z[\O(n) Return a list of this map's elements. The list is  produced lazily. ]^_O(n); Transform this map by applying a function to every value. O(n)6 Reduce this map by applying a binary operator to all 9 elements, using the given starting value (typically the " right-identity of the operator). O(1) Construct an empty map. O(n+m)7 The union of two maps. If a key occurs in both maps, ? the mapping from the first will be the mapping in the result. `AInsert a list of key-value pairs which keys all hash to the same D hash value. Prefer key-value pairs in the list to key-value pairs  already in the map. aAInsert a list of key-value pairs which keys all hash to the same E hash value. Prefer key-value pairs already in the map to key-value  pairs in the list. bAInsert a list of key-value pairs which keys all hash to the same ? hash value. Merge the list of key-value pairs to be inserted xs $ with any existing key-values pairs ys by applying f xs ys. cO(n); Transform this map by applying a function to every value; D when f k v returns Just x, keep an entry mapping k to x, otherwise ! do not include k in the result. O(n): Transform this map by accumulating an Applicative result  from every value. debin7 assures that we never have empty trees within a tree. fgh@Compute the first (lowest-order) bit at which h1 and h2 differ. + This is the mask that distinguishes them. iAGiven mask bit m expressed as a word, compute the suffix bits of # hash i, also expressed as a word. jGiven two hashes and/'or SuffixMasks for which nomatch p1 p2 && @ nomatch p2 p1, compute SuffixMask that differentiates them, by C first computing the mask m and then using that to derive a suffix  from one of them (it won'&t matter which, as those bits are the  same). k@Is the mask of sm1 closer to the root of the tree (lower order) B than the mask of sm2? This is actually approximate, and returns C junk when both sm1 and sm2 are at the same tree level. This must B be disambiguated by first checking sm1==sm2, and subsequently by C checking nomatch in the appropriate direction (which will need to 9 happen anyway to determine if insertion or branching is  appropriate). l Return a m> whose single set bit corresponds to the lowest set bit of w. Z[\bcdefgk\[ZZ[\bcdefgkportable provisionaljohan.tibell@gmail.comnopqrstu8:<=ACOQSUnprtnprtportable provisionaljohan.tibell@gmail.comO(1) Return v if this map is empty, w otherwise. O(n)6 Return the number of key-value mappings in this map.  O(min(n,W))0 Return the value to which the specified key is  mapped, or x. if this map contains no mapping for the key.  O(min(n,W))0 Return the value to which the specified key is B mapped, or the default value if this map contains no mapping for  the key. Default value to return. O(1)( Construct a map with a single element.  O(min(n,W))2 Associate the specified value with the specified B key in this map. If this map previously contained a mapping for % the key, the old value is replaced.  O(min(n,W))4 Remove the mapping for the specified key from this  map if present.  O(min(n,W))3 Associate the value with the key in this map. If D this map previously contained a mapping for the key, the old value E is replaced by the result of applying the given function to the new  and old value. Example:  insertWith f k v map  where f new old = new + old  O(min(n,W)2 Adjust the value tied to a given key in this map 8 only if it is present. Otherwise, leave the map alone. O(n); Transform this map by applying a function to every value. O(n+m)7 The union of two maps. If a key occurs in both maps, L the provided function (first argument) will be used to compute the result. O(n): Difference of two maps. Return elements of the first map  not existing in the second. O(n)< Intersection of two maps. Return elements of the first map " for keys existing in the second. O(n)6 Reduce this map by applying a binary operator to all 9 elements, using the given starting value (typically the " right-identity of the operator). O(n)6 Reduce this map by applying a binary operator to all 9 elements, using the given starting value (typically the C left-identity of the operator). Each application of the operator 9 is evaluated before before using the result in the next > application. This function is strict in the starting value. O(n)6 Reduce this map by applying a binary operator to all 9 elements, using the given starting value (typically the C left-identity of the operator). Each application of the operator 9 is evaluated before before using the result in the next > application. This function is strict in the starting value. O(n)9 Filter this map by retaining only elements satisfying a  predicate. O(n)9 Filter this map by retaining only elements which values  satisfy a predicate. O(n*min(W, n))* Construct a map from a list of elements. O(n*min(W, n))0 Construct a map from a list of elements. Uses 3 the provided function to merge duplicate entries. O(n) Return a list of this map's keys. The list is produced  lazily. O(n) Return a list of this map' s values. The list is produced  lazily.     portable provisionaljohan.tibell@gmail.comO(1)( Construct a map with a single element.  O(min(n,W))2 Associate the specified value with the specified B key in this map. If this map previously contained a mapping for % the key, the old value is replaced.  O(min(n,W))3 Associate the value with the key in this map. If D this map previously contained a mapping for the key, the old value E is replaced by the result of applying the given function to the new  and old value. Example:  insertWith f k v map  where f new old = new + old  O(min(n,W)2 Adjust the value tied to a given key in this map 8 only if it is present. Otherwise, leave the map alone. O(n); Transform this map by applying a function to every value. !O(n+m)7 The union of two maps. If a key occurs in both maps, L the provided function (first argument) will be used to compute the result. "O(n*min(W, n))* Construct a map from a list of elements. #O(n*min(W, n))0 Construct a map from a list of elements. Uses 3 the provided function to merge duplicate entries.   !"#  ! "# !"#portable provisionaljohan.tibell@gmail.com$9A set of values. A set cannot contain duplicate values. yz%O(1) Construct an empty set. &O(1)( Construct a set with a single element. 'O(n)9 Construct a set containing all elements from both sets. ATo obtain good performance, the smaller set must be presented as  the first argument. (O(1) Return v if this set is empty, w otherwise. )O(n), Return the number of elements in this set. * O(min(n,W)) Return v' if the given value is present in this  set, w otherwise. + O(min(n,W))& Add the specified value to this set. , O(min(n,W))- Remove the specified value from this set if  present. -O(n); Transform this set by applying a function to every value. 3 The resulting set may be smaller than the source. .O(n): Difference of two sets. Return elements of the first set  not existing in the second. /O(n); Intersection of two sets. Return elements present in both  the first set and the second. 0O(n)6 Reduce this set by applying a binary operator to all 9 elements, using the given starting value (typically the C left-identity of the operator). Each application of the operator 9 is evaluated before before using the result in the next > application. This function is strict in the starting value. 1O(n)6 Reduce this set by applying a binary operator to all 9 elements, using the given starting value (typically the " right-identity of the operator). 2O(n)9 Filter this set by retaining only elements satisfying a  predicate. 3O(n) Return a list of this set's elements. The list is  produced lazily. 4O(n*min(W, n))* Construct a set from a list of elements. $%&'()*+,-./01234$%&'()*+,-./01234$%&'()*+,-./01234portable provisionaljohan.tibell@gmail.com{O(n)3 Return the number of hash collisions in this map. |O(n)2 Return histogram of hash collisions in this map. D Keys are number of entries in bucket, values are number of buckets  of that size. {|{|portable provisionaljohan.tibell@gmail.com{|}      !"#$!"%  &  !'()*+,-&./012 34567 89:;<)=>?@ABCDEFGHIJKLMNOP1254QRSQRTNUV%WXYZunordered-containers-0.1.4.4Data.HashMap.LazyData.HashMap.Strict Data.HashSetData.FullList.LazyData.HashMap.CommonData.FullList.StrictData.HashMap.Lazy.InternalData.HashMap.Strict.InternalHashMaptoList foldrWithKeyemptyuniontraverseWithKeynullsizelookup lookupDefault singletoninsertdelete insertWithadjustmap unionWith difference intersectionfoldrfoldl' foldlWithKey' filterWithKeyfilterfromList fromListWithkeyselemsHashSetmemberListConsNilFullListFLsizeLlookupLmemberLinsertLdeleteL insertWithLadjustLunionL unionWithLmapLtraverseWithKeyLfoldlWithKey'L foldrWithKeyLfilterWithKeyL SuffixMaskHashSuffixTipBinequalnequalinsertCollidingLinsertCollidingRinsertCollidingWithfilterMapWithKeyjoinbinzeronomatch differentBitsuffixWbranchSuffixMaskshortercritBitbaseGHC.WordWordghc-prim GHC.TypesTrueFalse Data.MaybeNothingasMap collisionscollisionHistogram