O(n log n). mapKeys f s is the map obtained by
applying f to each key of s.
The size of the result may be smaller if f maps two or more
distinct keys to the same new key. In this case the value at the
smallest of these keys is retained.
O(n). mapKeysMonotonic f s == mapKeys f
s, but works only when f is strictly monotonic. That is,
for any values x and y, if x <
y then f x < f y. The precondition is
not checked.
O(n log n). mapKeysWith c f s is the map
obtained by applying f to each key of s.
The size of the result may be smaller if f maps two or more
distinct keys to the same new key. In this case the associated values
will be combined using c.