(a -> b -> c) -> (a, b) -> c

uncurry :: (a -> b -> c) -> ((a, b) -> c)
base Prelude, base Data.Tuple
uncurry converts a curried function to a function on pairs.
fromAscListWith :: (a -> a -> a) -> [(Key, a)] -> IntMap a
containers Data.IntMap.Strict, containers Data.IntMap.Lazy
O(n). Build a map from a list of key/value pairs are in ascending order, with a combining function on equal keys. The precondition (input list is ascending) is not checked. > fromAscListWith (++) [(3,"b"), (5,"a"), (5,"b")] == fromList [(3, "b"), (5, "ba")]
fromListWith :: (a -> a -> a) -> [(Key, a)] -> IntMap a
containers Data.IntMap.Strict
O(n*min(n,W)). Create a map from a list of key/value pairs with a combining function. See also fromAscListWith. > fromListWith (++) [(5,"a"), (5,"b"), (3,"b"), (3,"a"), (5,"a")] == fromList [(3, "ab"), (5, "aba")] > fromListWith (++) [] == empty
fromListWith :: (a -> a -> a) -> [(Key, a)] -> IntMap a
containers Data.IntMap.Lazy
O(n*min(n,W)). Create a map from a list of key/value pairs with a combining function. See also fromAscListWith. > fromListWith (++) [(5,"a"), (5,"b"), (3,"b"), (3,"a"), (5,"c")] == fromList [(3, "ab"), (5, "cba")] > fromListWith (++) [] == empty