**map** -base -opengl -bytestring

*O(n)* map f t is the Text obtained by applying f to each element of t. Subject to fusion. Performs replacement on invalid scalar values.
*O(n*min(n,W))*. map f s is the set obtained by applying f to each element of s.
It's worth noting that the size of the result may be smaller if, for some (x,y), x /= y && f x == f y
*O(n)*. Map a function over all values in the map.
> map (++ "x") (fromList [(5,"a"), (3,"b")]) == fromList [(3, "bx"), (5, "ax")]

*O(n)*. Map a function over all values in the map.
> map (++ "x") (fromList [(5,"a"), (3,"b")]) == fromList [(3, "bx"), (5, "ax")]

*O(n*log n)*. map f s is the set obtained by applying f to each element of s.
It's worth noting that the size of the result may be smaller if, for some (x,y), x /= y && f x == f y
*O(n)*. The function mapAccum threads an accumulating argument through the map in ascending order of keys.
> let f a b = (a ++ b, b ++ "X")
> mapAccum f "Everything: " (fromList [(5,"a"), (3,"b")]) == ("Everything: ba", fromList [(3, "bX"), (5, "aX")])
*O(n)*. The function mapAccum threads an accumulating argument through the map in ascending order of keys.
> let f a b = (a ++ b, b ++ "X")
> mapAccum f "Everything: " (fromList [(5,"a"), (3,"b")]) == ("Everything: ba", fromList [(3, "bX"), (5, "aX")])
*O(n)* Like a combination of map and foldl'. Applies a function to each element of a Text, passing an accumulating parameter from left to right, and returns a final Text. Performs replacement on invalid scalar values.
The mapAccumR function behaves like a combination of map and a strict foldr; it applies a function to each element of a Text, passing an accumulating parameter from right to left, and returning a final value of this accumulator together with the new Text. Performs replacement on invalid scalar values.
*O(n)*. The function mapAccumR threads an accumulating argument through the map in descending order of keys.

*O(n)*. The function mapAccumR threads an accumulating argument through the map in descending order of keys.

*O(n)*. The function mapAccumWithKey threads an accumulating 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")])
*O(n)*. The function mapAccumWithKey threads an accumulating 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")])
Constructs a new array derived from the original array by applying a function to each of the elements.

Apply a function to transform the result of a continuation-passing computation.
* (mapCont f m) = f . runCont
Apply a function to transform the result of a continuation-passing computation.
* (mapContT f m) = f . runContT
*O(n)*. Map values and separate the Left and Right results.
> let f a = if a < "c" then Left a else Right a
> mapEither f (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")])
> == (fromList [(3,"b"), (5,"a")], fromList [(1,"x"), (7,"z")])
>
> 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 values and separate the Left and Right results.
> let f a = if a < "c" then Left a else Right a
> mapEither f (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")])
> == (fromList [(3,"b"), (5,"a")], fromList [(1,"x"), (7,"z")])
>
> 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 Left and Right results.
> let f k a = if k < 5 then Left (k * 2) else Right (a ++ a)
> mapEitherWithKey f (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")])
> == (fromList [(1,2), (3,6)], fromList [(5,"aa"), (7,"zz")])
>
> mapEitherWithKey (\_ a -> Right a) (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")])
> == (empty, fromList [(1,"x"), (3,"b"), (5,"a"), (7,"z")])
*O(n)*. Map keys/values and separate the Left and Right results.
> let f k a = if k < 5 then Left (k * 2) else Right (a ++ a)
> mapEitherWithKey f (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")])
> == (fromList [(1,2), (3,6)], fromList [(5,"aa"), (7,"zz")])
>
> mapEitherWithKey (\_ a -> Right a) (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")])
> == (empty, fromList [(1,"x"), (3,"b"), (5,"a"), (7,"z")])
Show more results