úÎUíNÖS      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRportable provisionallibraries@haskell.orgSTA map of integers to values a. UVWXYZ[\ O(min(n,W)). Find the value at a key.  Calls ]$ when the element can not be found. B fromList [(5,'a'), (3,'b')] ! 1 Error: element not in the map ( fromList [(5,'a'), (3,'b')] ! 5 == 'a' Same as . O(1). Is the map empty? - Data.EnumMap.null (empty) == True . Data.EnumMap.null (singleton 1 'a') == False O(n)!. Number of elements in the map. 3 size empty == 0 3 size (singleton 1 'a') == 1 3 size (fromList([(1,'a'), (2,'c'), (3,'b')])) == 3  O(min(n,W))". Is the key a member of the map? 0 member 5 (fromList [(5,'a'), (3,'b')]) == True 1 member 1 (fromList [(5,'a'), (3,'b')]) == False O(log n)&. Is the key not a member of the map? 4 notMember 5 (fromList [(5,'a'), (3,'b')]) == False 3 notMember 1 (fromList [(5,'a'), (3,'b')]) == True  O(min(n,W))1. Lookup the value at a key in the map. See also Data.Map.lookup. ^_  O(min(n,W)). The expression (  def k map)  returns the value at key k or returns def when the key is not an  element of the map. < findWithDefault 'x' 1 (fromList [(5,'a'), (3,'b')]) == 'x' < findWithDefault 'x' 5 (fromList [(5,'a'), (3,'b')]) == 'a' O(1). The empty map.  empty == fromList []  size empty == 0 O(1). A map of one element. / singleton 1 'a' == fromList [(1, 'a')]  size (singleton 1 'a') == 1  O(min(n,W)). Insert a new key/value pair in the map. C If the key is already present in the map, the associated value is ( replaced with the supplied value, i.e.   is equivalent to    `. M insert 5 'x' (fromList [(5,'a'), (3,'b')]) == fromList [(3, 'b'), (5, 'x')] W insert 7 'x' (fromList [(5,'a'), (3,'b')]) == fromList [(3, 'b'), (5, 'a'), (7, 'x')] ? insert 5 'x' empty == singleton 5 'x'  O(min(n,W))$. Insert with a combining function.    f key value mp ( will insert the pair (key, value) into mp if key does @ not exist in the map. If the key does exist, the function will  insert f new_value old_value. [ insertWith (++) 5 "xxx" (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "xxxa")] d insertWith (++) 7 "xxx" (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a"), (7, "xxx")] L insertWith (++) 5 "xxx" empty == singleton 5 "xxx"  O(min(n,W))$. Insert with a combining function.   f key value mp ( will insert the pair (key, value) into mp if key does @ not exist in the map. If the key does exist, the function will  insert f key new_value old_value. T let f key new_value old_value = (show key) ++ ":" ++ new_value ++ "|" ++ old_value ^ insertWithKey f 5 "xxx" (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "5:xxx|a")] d insertWithKey f 7 "xxx" (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a"), (7, "xxx")] L insertWithKey f 5 "xxx" empty == singleton 5 "xxx"  O(min(n,W)). The expression ( f k x map) 0 is a pair where the first element is equal to ( k map) " and the second element equal to ( f k x map).  T let f key new_value old_value = (show key) ++ ":" ++ new_value ++ "|" ++ old_value p insertLookupWithKey f 5 "xxx" (fromList [(5,"a"), (3,"b")]) == (Just "a", fromList [(3, "b"), (5, "5:xxx|a")]) v insertLookupWithKey f 7 "xxx" (fromList [(5,"a"), (3,"b")]) == (Nothing, fromList [(3, "b"), (5, "a"), (7, "xxx")]) ^ insertLookupWithKey f 5 "xxx" empty == (Nothing, singleton 5 "xxx") This is how to define  insertLookup using insertLookupWithKey: D let insertLookup kx x t = insertLookupWithKey (\_ a _ -> a) kx x t _ insertLookup 5 "x" (fromList [(5,"a"), (3,"b")]) == (Just "a", fromList [(3, "b"), (5, "x")]) i insertLookup 7 "x" (fromList [(5,"a"), (3,"b")]) == (Nothing, fromList [(3, "b"), (5, "a"), (7, "x")])  O(min(n,W))?. Delete a key and its value from the map. When the key is not 4 a member of the map, the original map is returned. ; delete 5 (fromList [(5,"a"), (3,"b")]) == singleton 3 "b" I delete 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a")] 1 delete 5 empty == empty  O(min(n,W))8. Adjust a value at a specific key. When the key is not 4 a member of the map, the original map is returned. Y adjust ("new " ++) 5 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "new a")] U adjust ("new " ++) 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a")] = adjust ("new " ++) 7 empty == empty  O(min(n,W))8. Adjust a value at a specific key. When the key is not 4 a member of the map, the original map is returned. * let f key x = (show key) ++ ":new " ++ x X adjustWithKey f 5 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "5:new a")] R adjustWithKey f 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a")] : adjustWithKey f 7 empty == empty  O(min(n,W)). The expression ( f k map) updates the value x  at k (if it is in the map). If (f x) is a, the element is  deleted. If it is (b y ), the key k is bound to the new value y. 6 let f x = if x == "a" then Just "new a" else Nothing O update f 5 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "new a")] K update f 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a")] = update f 3 (fromList [(5,"a"), (3,"b")]) == singleton 5 "a"  O(min(n,W)). The expression ( f k map) updates the value x  at k (if it is in the map). If (f k x) is a, the element is  deleted. If it is (b y ), the key k is bound to the new value y. G let f k x = if x == "a" then Just ((show k) ++ ":new a") else Nothing X updateWithKey f 5 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "5:new a")] R updateWithKey f 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a")] D updateWithKey f 3 (fromList [(5,"a"), (3,"b")]) == singleton 5 "a"  O(min(n,W)). Lookup and update. 8 The function returns original value, if it is updated. ! This is different behavior than Data.Map.updateLookupWithKey. = Returns the original key value if the map entry is deleted. G let f k x = if x == "a" then Just ((show k) ++ ":new a") else Nothing j updateLookupWithKey f 5 (fromList [(5,"a"), (3,"b")]) == (Just "a", fromList [(3, "b"), (5, "5:new a")]) d updateLookupWithKey f 7 (fromList [(5,"a"), (3,"b")]) == (Nothing, fromList [(3, "b"), (5, "a")]) V updateLookupWithKey f 3 (fromList [(5,"a"), (3,"b")]) == (Just "b", singleton 5 "a") O(log n). The expression ( f k map) alters the value x at k, or absence thereof.  8 can be used to insert, delete, or update a value in an .  In short :  k ( f k m) = f ( k m). The union of a list of maps. n unions [(fromList [(5, "a"), (3, "b")]), (fromList [(5, "A"), (7, "C")]), (fromList [(5, "A3"), (3, "B3")])] 0 == fromList [(3, "b"), (5, "a"), (7, "C")] n unions [(fromList [(5, "A3"), (3, "B3")]), (fromList [(5, "A"), (7, "C")]), (fromList [(5, "a"), (3, "b")])] 2 == fromList [(3, "B3"), (5, "A3"), (7, "C")] 9The union of a list of maps, with a combining operation. w unionsWith (++) [(fromList [(5, "a"), (3, "b")]), (fromList [(5, "A"), (7, "C")]), (fromList [(5, "A3"), (3, "B3")])] 5 == fromList [(3, "bB3"), (5, "aAA3"), (7, "C")] O(n+m)'. The (left-biased) union of two maps. ? It prefers the first map when duplicate keys are encountered,  i.e. ( ==  `). r union (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == fromList [(3, "b"), (5, "a"), (7, "C")] O(n+m)'. The union with a combining function. | unionWith (++) (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == fromList [(3, "b"), (5, "aA"), (7, "C")] O(n+m)'. The union with a combining function. Z let f key left_value right_value = (show key) ++ ":" ++ left_value ++ "|" ++ right_value  unionWithKey f (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == fromList [(3, "b"), (5, "5:a|A"), (7, "C")] O(n+m)/. Difference between two maps (based on keys). _ difference (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == singleton 3 "b" O(n+m)(. Difference with a combining function. E let f al ar = if al == "b" then Just (al ++ ":" ++ ar) else Nothing \ differenceWith f (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (3, "B"), (7, "C")])  == singleton 3 "b:B" O(n+m)@. Difference with a combining function. When two equal keys are L encountered, the combining function is applied to the key and both values.  If it returns a4, the element is discarded (proper set difference).  If it returns (b y+), the element is updated with a new value y. Z let f k al ar = if al == "b" then Just ((show k) ++ ":" ++ al ++ "|" ++ ar) else Nothing ` differenceWithKey f (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (3, "B"), (10, "C")])  == singleton 3 "3:b|B" O(n+m)>. The (left-biased) intersection of two maps (based on keys). a intersection (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == singleton 5 "a" O(n+m).. The intersection with a combining function. k intersectionWith (++) (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == singleton 5 "aA" !O(n+m).. The intersection with a combining function. 4 let f k al ar = (show k) ++ ":" ++ al ++ "|" ++ ar n intersectionWithKey f (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == singleton 5 "5:a|A" "O(log n)'. Update the value at the minimal key. x updateMinWithKey (\ k a -> Just ((show k) ++ ":" ++ a)) (fromList [(5,"a"), (3,"b")]) == fromList [(3,"3:b"), (5,"a")] j updateMinWithKey (\ _ _ -> Nothing) (fromList [(5,"a"), (3,"b")]) == singleton 5 "a" c#O(log n)'. Update the value at the maximal key. x updateMaxWithKey (\ k a -> Just ((show k) ++ ":" ++ a)) (fromList [(5,"a"), (3,"b")]) == fromList [(3,"b"), (5,"5:a")] j updateMaxWithKey (\ _ _ -> Nothing) (fromList [(5,"a"), (3,"b")]) == singleton 3 "b" d$O(log n)9. Retrieves the maximal (key,value) pair of the map, and & the map stripped of that element, or a if passed an empty map. Q maxViewWithKey (fromList [(5,"a"), (3,"b")]) == Just ((5,"a"), singleton 3 "b") ! maxViewWithKey empty == Nothing e%O(log n)9. Retrieves the minimal (key,value) pair of the map, and & the map stripped of that element, or a if passed an empty map. Q minViewWithKey (fromList [(5,"a"), (3,"b")]) == Just ((3,"b"), singleton 5 "a") ! minViewWithKey empty == Nothing f&O(log n)'. Update the value at the maximal key. d updateMax (\ a -> Just ("X" ++ a)) (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "Xa")] U updateMax (\ _ -> Nothing) (fromList [(5,"a"), (3,"b")]) == singleton 3 "b" 'O(log n)'. Update the value at the minimal key. d updateMin (\ a -> Just ("X" ++ a)) (fromList [(5,"a"), (3,"b")]) == fromList [(3, "Xb"), (5, "a")] U updateMin (\ _ -> Nothing) (fromList [(5,"a"), (3,"b")]) == singleton 5 "a" g(O(log n)4. Retrieves the maximal key of the map, and the map  stripped of that element, or a if passed an empty map. )O(log n)4. Retrieves the minimal key of the map, and the map  stripped of that element, or a if passed an empty map. *O(log n)'. Delete and find the maximal element. +O(log n)'. Delete and find the minimal element. ,O(log n). The minimal key of the map. -O(log n). The maximal key of the map. .O(log n). Delete the minimal key. /O(log n). Delete the maximal key. 0O(n+m):. Is this a proper submap? (ie. a submap but not equal).  Defined as (0 = 1 (==)). 1O(n+m)9. Is this a proper submap? (ie. a submap but not equal).  The expression (1 f m1 m2 ) returns h when  m1 and m2 are not equal,  all keys in m1 are in m2 , and when f returns h when A applied to their respective values. For example, the following  expressions are all h:  E isProperSubmapOfBy (==) (fromList [(1,1)]) (fromList [(1,1),(2,2)]) E isProperSubmapOfBy (<=) (fromList [(1,1)]) (fromList [(1,1),(2,2)]) But the following are all i: K isProperSubmapOfBy (==) (fromList [(1,1),(2,2)]) (fromList [(1,1),(2,2)]) E isProperSubmapOfBy (==) (fromList [(1,1),(2,2)]) (fromList [(1,1)]) K isProperSubmapOfBy (<) (fromList [(1,1)]) (fromList [(1,1),(2,2)]) j2O(n+m). Is this a submap?  Defined as (2 = 3 (==)). 3O(n+m).  The expression (3 f m1 m2 ) returns h if  all keys in m1 are in m2 , and when f returns h when A applied to their respective values. For example, the following  expressions are all h:  ? isSubmapOfBy (==) (fromList [(1,1)]) (fromList [(1,1),(2,2)]) ? isSubmapOfBy (<=) (fromList [(1,1)]) (fromList [(1,1),(2,2)]) E isSubmapOfBy (==) (fromList [(1,1),(2,2)]) (fromList [(1,1),(2,2)]) But the following are all i: ? isSubmapOfBy (==) (fromList [(1,2)]) (fromList [(1,1),(2,2)]) > isSubmapOfBy (<) (fromList [(1,1)]) (fromList [(1,1),(2,2)]) ? isSubmapOfBy (==) (fromList [(1,1),(2,2)]) (fromList [(1,1)]) 4O(n)-. Map a function over all values in the map. O map (++ "x") (fromList [(5,"a"), (3,"b")]) == fromList [(3, "bx"), (5, "ax")] 5O(n)-. Map a function over all values in the map. & let f key x = (show key) ++ ":" ++ x Q mapWithKey f (fromList [(5,"a"), (3,"b")]) == fromList [(3, "3:b"), (5, "5:a")] 6O(n). The function 6 threads an accumulating 6 argument through the map in ascending order of keys.  let f a b = (a ++ b, b ++ "X") p mapAccum f "Everything: " (fromList [(5,"a"), (3,"b")]) == ("Everything: ba", fromList [(3, "bX"), (5, "aX")]) 7O(n). The function 7 threads an accumulating 6 argument through the map in ascending order of keys. < let f a k b = (a ++ " " ++ (show k) ++ "-" ++ b, b ++ "X") { mapAccumWithKey f "Everything:" (fromList [(5,"a"), (3,"b")]) == ("Everything: 3-b 5-a", fromList [(3, "bX"), (5, "aX")]) kO(n). The function k threads an accumulating 6 argument through the map in ascending order of keys. 8O(n)1. Filter all values that satisfy some predicate. A filter (> "a") (fromList [(5,"a"), (3,"b")]) == singleton 3 "b" 7 filter (> "x") (fromList [(5,"a"), (3,"b")]) == empty 7 filter (< "a") (fromList [(5,"a"), (3,"b")]) == empty 9O(n). Filter all keys/$values that satisfy some predicate. P filterWithKey (\k _ -> k > 4) (fromList [(5,"a"), (3,"b")]) == singleton 5 "a" :O(n);. Partition the map according to some predicate. The first F map contains all elements that satisfy the predicate, the second all , elements that fail the predicate. See also @. W partition (> "a") (fromList [(5,"a"), (3,"b")]) == (singleton 3 "b", singleton 5 "a") [ partition (< "x") (fromList [(5,"a"), (3,"b")]) == (fromList [(3, "b"), (5, "a")], empty) [ partition (> "x") (fromList [(5,"a"), (3,"b")]) == (empty, fromList [(3, "b"), (5, "a")]) ;O(n);. Partition the map according to some predicate. The first F map contains all elements that satisfy the predicate, the second all , elements that fail the predicate. See also @. g partitionWithKey (\ k _ -> k > 3) (fromList [(5,"a"), (3,"b")]) == (singleton 5 "a", singleton 3 "b") k partitionWithKey (\ k _ -> k < 7) (fromList [(5,"a"), (3,"b")]) == (fromList [(3, "b"), (5, "a")], empty) k partitionWithKey (\ k _ -> k > 7) (fromList [(5,"a"), (3,"b")]) == (empty, fromList [(3, "b"), (5, "a")]) <O(n). Map values and collect the b results. 6 let f x = if x == "a" then Just "new a" else Nothing A mapMaybe f (fromList [(5,"a"), (3,"b")]) == singleton 5 "new a" =O(n) . Map keys/values and collect the b results. D let f k _ = if k < 5 then Just ("key : " ++ (show k)) else Nothing J mapMaybeWithKey f (fromList [(5,"a"), (3,"b")]) == singleton 3 "key : 3" >O(n). Map values and separate the l and m results. / let f a = if a < "c" then Left a else Right a = mapEither f (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")]) C == (fromList [(3,"b"), (5,"a")], fromList [(1,"x"), (7,"z")])  L mapEither (\ a -> Right a) (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")]) ? == (empty, fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")]) ?O(n) . Map keys/values and separate the l and m results. < let f k a = if k < 5 then Left (k * 2) else Right (a ++ a) D mapEitherWithKey f (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")]) A == (fromList [(1,2), (3,6)], fromList [(5,"aa"), (7,"zz")])  T mapEitherWithKey (\_ a -> Right a) (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")]) ? == (empty, fromList [(1,"x"), (3,"b"), (5,"a"), (7,"z")]) @O(log n). The expression (@ k map ) is a pair  (map1,map2)  where all keys in map1 are lower than k and all keys in  map2 larger than k. Any key equal to k is found in neither map1 nor map2. O split 2 (fromList [(5,"a"), (3,"b")]) == (empty, fromList [(3,"b"), (5,"a")]) C split 3 (fromList [(5,"a"), (3,"b")]) == (empty, singleton 5 "a") M split 4 (fromList [(5,"a"), (3,"b")]) == (singleton 3 "b", singleton 5 "a") C split 5 (fromList [(5,"a"), (3,"b")]) == (singleton 3 "b", empty) O split 6 (fromList [(5,"a"), (3,"b")]) == (fromList [(3,"b"), (5,"a")], empty) nAO(log n) . Performs a @$ but also returns whether the pivot $ key was found in the original map. ^ splitLookup 2 (fromList [(5,"a"), (3,"b")]) == (empty, Nothing, fromList [(3,"b"), (5,"a")]) S splitLookup 3 (fromList [(5,"a"), (3,"b")]) == (empty, Just "b", singleton 5 "a") \ splitLookup 4 (fromList [(5,"a"), (3,"b")]) == (singleton 3 "b", Nothing, singleton 5 "a") S splitLookup 5 (fromList [(5,"a"), (3,"b")]) == (singleton 3 "b", Just "a", empty) ^ splitLookup 6 (fromList [(5,"a"), (3,"b")]) == (fromList [(3,"b"), (5,"a")], Nothing, empty) oBO(n)(. Fold the values in the map, such that  B f z == p f z . D.  For example,   elems map = fold (:) [] map  let f a len = len + (length a) / fold f 0 (fromList [(5,"a"), (3,"bbb")]) == 4 CO(n)1. Fold the keys and values in the map, such that  C f z == p (q f) z . I.  For example,  1 keys map = foldWithKey (\k x ks -> k:ks) [] map A let f k a result = result ++ "(" ++ (show k) ++ ":" ++ a ++ ")" J foldWithKey f "Map: " (fromList [(5,"a"), (3,"b")]) == "Map: (5:a)(3:b)" rsDO(n). F Return all elements of the map in the ascending order of their keys. 2 elems (fromList [(5,"a"), (3,"b")]) == ["b","a"]  elems empty == [] EO(n)1. Return all keys of the map in ascending order. - keys (fromList [(5,"a"), (3,"b")]) == [3,5]  keys empty == [] F O(n*min(n,W))". The set of all keys of the map. E keysSet (fromList [(5,"a"), (3,"b")]) == Data.IntSet.fromList [3,5] $ keysSet empty == Data.IntSet.empty GO(n). Return all key//value pairs in the map in ascending key order. < assocs (fromList [(5,"a"), (3,"b")]) == [(3,"b"), (5,"a")]  assocs empty == [] HO(n)". Convert the map to a list of key/ value pairs. < toList (fromList [(5,"a"), (3,"b")]) == [(3,"b"), (5,"a")]  toList empty == [] IO(n)". Convert the map to a list of key/value pairs where the  keys are in ascending order. ? toAscList (fromList [(5,"a"), (3,"b")]) == [(3,"b"), (5,"a")] J O(n*min(n,W))!. Create a map from a list of key/ value pairs.  fromList [] == empty F fromList [(5,"a"), (3,"b"), (5, "c")] == fromList [(5,"c"), (3,"b")] F fromList [(5,"c"), (3,"b"), (5, "a")] == fromList [(5,"a"), (3,"b")] K O(n*min(n,W))!. Create a map from a list of key/0value pairs with a combining function. See also N. e fromListWith (++) [(5,"a"), (5,"b"), (3,"b"), (3,"a"), (5,"a")] == fromList [(3, "ab"), (5, "aba")]  fromListWith (++) [] == empty L O(n*min(n,W)) . Build a map from a list of key/Bvalue pairs with a combining function. See also fromAscListWithKey'. e fromListWith (++) [(5,"a"), (5,"b"), (3,"b"), (3,"a"), (5,"a")] == fromList [(3, "ab"), (5, "aba")]  fromListWith (++) [] == empty M O(n*min(n,W)) . Build a map from a list of key/value pairs where " the keys are in ascending order. J fromAscList [(3,"b"), (5,"a")] == fromList [(3, "b"), (5, "a")] J fromAscList [(3,"b"), (5,"a"), (5,"b")] == fromList [(3, "b"), (5, "b")] N O(n*min(n,W)) . Build a map from a list of key/value pairs where K the keys are in ascending order, with a combining function on equal keys. T fromAscListWith (++) [(3,"b"), (5,"a"), (5,"b")] == fromList [(3, "b"), (5, "ba")] O O(n*min(n,W)) . Build a map from a list of key/value pairs where K the keys are in ascending order, with a combining function on equal keys. T fromAscListWith (++) [(3,"b"), (5,"a"), (5,"b")] == fromList [(3, "b"), (5, "ba")] P O(n*min(n,W)) . Build a map from a list of key/value pairs where 3 the keys are in ascending order and all distinct. I fromDistinctAscList [(3,"b"), (5,"a")] == fromList [(3, "b"), (5, "a")] tuvQO(n);. Show the tree that implements the map. The tree is shown " in a compressed, hanging format. RO(n). The expression (R hang wide map) shows & the tree that implements the map. If hang is  h, a hanging5 tree is shown otherwise a rotated tree is shown. If  wide is h", an extra wide version is shown. wxyz{|}~€‚ƒ„…†‡ˆ‰ŠS  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS  !4567BCDEFGHJKLIMNOP89:;<=>?@A2301(),-./+*'&"#%$QRS  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR‹      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc_de_fg_fhijklmnopnoqrs_tu_tvwx_dy_z{y|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“” EnumMap-0.0.1 Data.EnumMapKey_EnumMap!\\nullsizemember notMemberlookupfindWithDefaultempty singletoninsert insertWith insertWithKeyinsertLookupWithKeydeleteadjust adjustWithKeyupdate updateWithKeyupdateLookupWithKeyalterunions unionsWithunion unionWith unionWithKey differencedifferenceWithdifferenceWithKey intersectionintersectionWithintersectionWithKeyupdateMinWithKeyupdateMaxWithKeymaxViewWithKeyminViewWithKey updateMax updateMinmaxViewminView deleteFindMax deleteFindMinfindMinfindMax deleteMin deleteMaxisProperSubmapOfisProperSubmapOfBy isSubmapOf isSubmapOfBymap mapWithKeymapAccummapAccumWithKeyfilter filterWithKey partitionpartitionWithKeymapMaybemapMaybeWithKey mapEithermapEitherWithKeysplit splitLookupfold foldWithKeyelemskeyskeysSetassocstoList toAscListfromList fromListWithfromListWithKey fromAscListfromAscListWithfromAscListWithKeyfromDistinctAscListshowTree showTreeWithMaskPrefixBinTipNilNat natFromInt intFromNatshiftRL magicShiftRLbaseGHC.ErrerrorlookupNfind'GHC.Baseconst Data.MaybeNothingJustupdateMinWithKeyUnsignedupdateMaxWithKeyUnsignedmaxViewUnsignedminViewUnsignedfirstghc-primGHC.BoolTrueFalse submapCmp mapAccumL Data.EitherLeftRightsplit' splitLookup'foldr Data.Tupleuncurryfoldr'equalnequalintMapTc showsTree showsTreeHangshowBinshowWide showsBarsnodewithBar withEmptyjoinbinzeronomatchmatchmaskzeroNmaskWshorter branchMaskhighestBitMask foldlStrict