úÎE™None    NoneA map from keys k to values v.O(1). Construct an empty map.O(log n)u. Associate the given value with the given key. If the key is already present in the map, the old value is replaced.O(log n)5. Return the value associated with the given key, or  .Noteu: This might increase the map's memory consumption by putting the key into the map. If that is not acceptable, use .O(log n)I. Remove the value associated with a given key from the map, if present.NoteÑ: This does not actually remove the key from the map. In fact, it might actually increase the map's memory consumption by putting the key into the map. To completely delete an entry, including its key, use .O(log n)5. Return the value associated with the given key, or  .In contrast to R, this will never increase the map's memory consumption. However, it might allow  phantom reads- to occur. Consider the following situation: }f = atomically $ do v1 <- phantomLookup k m v2 <- phantomLookup k m return (v1 == v2)Under certain circumstances f might actually return False, in particular if the first  phantomLookupI happens on an empty map and some other transaction inserts a value for k before the second call to  phantomLookup.O(log n)‰. This will completely remove a given key and its associated value from the map, if present. This is not an atomic operation, however. Use with caution!!"#$%&'()*+,-./0123!"#%$&)('*+,-./01234       !"#$%&''()*+,-./012345678 ttrie-0.1Control.Concurrent.STM.MapData.SparseArrayMapemptyinsertlookupdelete phantomLookup unsafeDeleteLevelHashBitmap SparseArray emptyArray mkSingletonmkPair arrayLookup arrayInsert arrayUpdate arrayDelete arrayMapM arrayToMaybehash hashLength bitsPerSubkey subkeyMaskdownup lastLevelindexmask sparseIndexhashable-1.2.3.2Data.Hashable.ClassHashablebase Data.MaybeNothingLeafBranchLINodeTombListArrayINodegetTVarclean cleanParentcompress resurrectcontract listLookup listDelete