*"     Extensions to Data.Map(c) Elsen, Inc., 2016BSD3cooper.charles.m@gmail.com experimentalportableSafeA quadruply nested MapA triply nested MapA doubly nested MapSynonym for MapExclusive sliceO(log n)mInclusive key-based slice. Returns a map whose keys are all between the lower and upper bounds (inclusive).O(log n)Inclusive index-based slice. Run an inclusive slice given left and right indices. if the left or right index is out of bounds, the left index of 0 or right index of (Map.size m - 1) will be used respectively.O(log n)Drops n+ elements from the (left hand side of the) .Drops n, elements from the (right hand side of the) .Takes n+ elements from the (left hand side of the) . Takes n, elements from the (right hand side of the) . This generalizes  to a monadic predicate. ,Transpose the first two indexes of a nested . +Run a grouping function over the keys of a . O(n * log(n)) -Run a grouping function over the values of a . O(n * log(n))Run a grouping function over a V. The supplied function will map each element of the list to a group. The resulting k will map the groups produced by the supplied function to the lists of elements which produced that group..Perhaps this is better illustrated by example:let even s = s `mod` 2 == 0groupBy even [1,2,3,4]%fromList [(False,[3,1]),(True,[4,2])] O(n * log(n))6Create a Map from a list of keys and a list of values.&fromLists ks vs = fromList (zip ks vs)'Perform a left scan on the values of a .:Map.elems (Map.scanl1 f xs) = List.scanl1 f (Map.elems xs)(Perform a right scan on the values of a .:Map.elems (Map.scanr1 f xs) = List.scanr1 f (Map.elems xs)*Generate a Lookup2 from a list of triples.+Lookup a value two levels deep in a Lookup2-Lookup a value three levels deep in a Lookup3,Lookup a value four levels deep in a Lookup4 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~    Safe!r4441111      !"#$%$&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'map-exts-0.2.0.0-HxRr6ZmAZiR64jCeZzwkVeData.Map.ExtensionsData.Map.FunctionLookup4Lookup3Lookup2LookupslicesliceidropLeft dropRighttakeLeft takeRightfilterM transpose groupKeysBy groupElemsBygroupBy fromListsscanl1scanr1 fromList2lookup2lookup3lookup4sliceExcontainers-0.5.10.2Data.Map.InternalMapfilterData.Map foldWithKeyfoldinsertLookupWithKey'insertWithKey' insertWith'$Data.Map.Internal.DeprecatedShowTree showTreeWithshowTreeData.Map.Internal.Debugvalid splitRoot deleteFindMax deleteFindMin splitLookupsplitfromDistinctDescListfromDistinctAscListfromDescListWithKeyfromAscListWithKeyfromDescListWithfromAscListWith fromDescList fromAscList toDescList toAscListtoListfromListWithKey fromListWithfromListfromSetkeysSetassocskeyselemsfoldMapWithKey foldlWithKey' foldlWithKey foldrWithKey' foldrWithKeyfoldl'foldlfoldr'foldrmapKeysMonotonic mapKeysWithmapKeysmapAccumRWithKeymapAccumWithKeymapAccumtraverseWithKey mapWithKeymapmapEitherWithKey mapEithertraverseMaybeWithKeymapMaybeWithKeymapMaybepartitionWithKey partition spanAntitonedropWhileAntitonetakeWhileAntitone filterWithKeyisProperSubmapOfByisProperSubmapOf isSubmapOfBy isSubmapOf mergeWithKeyintersectionWithKeyintersectionWith restrictKeys intersectiondifferenceWithKeydifferenceWith withoutKeys difference unionWithKey unionWithunion unionsWithunionsmaxViewminViewmaxViewWithKeyminViewWithKeyupdateMaxWithKeyupdateMinWithKey updateMax updateMin deleteMax deleteMinfindMax lookupMaxfindMin lookupMindeleteAtupdateAtsplitAtdroptakeelemAt lookupIndex findIndexalterFalterupdateLookupWithKey updateWithKeyupdate adjustWithKeyadjustdeleteinsertLookupWithKey insertWithKey insertWithinsert singletonemptylookupGElookupLElookupGTlookupLTfindWithDefault notMembermemberlookupsizenull\\!?!<$$><$$$><$$$$><&><&&><&&&><&&&&>