Hoogle Search
Within LTS Haskell 24.6 (ghc-9.10.2)
Note that Stackage only displays results for the latest LTS and Nightly snapshot. Learn more.
fromListWith :: (Eq k, Hashable k) => (v -> v -> v) -> [(k, v)] -> HashMap k vunordered-containers Data.HashMap.Lazy Construct a map from a list of elements. Uses the provided function f to merge duplicate entries with (f newVal oldVal).
Examples
Given a list xs, create a map with the number of occurrences of each element in xs:let xs = ['a', 'b', 'a'] in fromListWith (+) [ (x, 1) | x <- xs ] = fromList [('a', 2), ('b', 1)]
Given a list of key-value pairs xs :: [(k, v)], group all values by their keys and return a HashMap k [v].let xs = [('a', 1), ('b', 2), ('a', 3)] in fromListWith (++) [ (k, [v]) | (k, v) <- xs ] = fromList [('a', [3, 1]), ('b', [2])]
Note that the lists in the resulting map contain elements in reverse order from their occurrences in the original list. More generally, duplicate entries are accumulated as follows; this matters when f is not commutative or not associative.fromListWith f [(k, a), (k, b), (k, c), (k, d)] = fromList [(k, f d (f c (f b a)))]
fromListWithKey :: (Eq k, Hashable k) => (k -> v -> v -> v) -> [(k, v)] -> HashMap k vunordered-containers Data.HashMap.Lazy Construct a map from a list of elements. Uses the provided function to merge duplicate entries.
Examples
Given a list of key-value pairs where the keys are of different flavours, e.g:data Key = Div | Sub
and the values need to be combined differently when there are duplicates, depending on the key:combine Div = div combine Sub = (-)
then fromListWithKey can be used as follows:fromListWithKey combine [(Div, 2), (Div, 6), (Sub, 2), (Sub, 3)] = fromList [(Div, 3), (Sub, 1)]
More generally, duplicate entries are accumulated as follows;fromListWith f [(k, a), (k, b), (k, c), (k, d)] = fromList [(k, f k d (f k c (f k b a)))]
fromListWith :: (Eq k, Hashable k) => (v -> v -> v) -> [(k, v)] -> HashMap k vunordered-containers Data.HashMap.Strict Construct a map from a list of elements. Uses the provided function f to merge duplicate entries with (f newVal oldVal).
Examples
Given a list xs, create a map with the number of occurrences of each element in xs:let xs = ['a', 'b', 'a'] in fromListWith (+) [ (x, 1) | x <- xs ] = fromList [('a', 2), ('b', 1)]
Given a list of key-value pairs xs :: [(k, v)], group all values by their keys and return a HashMap k [v].let xs = ('a', 1), ('b', 2), ('a', 3)] in fromListWith (++) [ (k, [v]) | (k, v) <- xs ] = fromList [('a', [3, 1]), ('b', [2])]
Note that the lists in the resulting map contain elements in reverse order from their occurrences in the original list. More generally, duplicate entries are accumulated as follows; this matters when f is not commutative or not associative.fromListWith f [(k, a), (k, b), (k, c), (k, d)] = fromList [(k, f d (f c (f b a)))]
fromListWithKey :: (Eq k, Hashable k) => (k -> v -> v -> v) -> [(k, v)] -> HashMap k vunordered-containers Data.HashMap.Strict Construct a map from a list of elements. Uses the provided function to merge duplicate entries.
Examples
Given a list of key-value pairs where the keys are of different flavours, e.g:data Key = Div | Sub
and the values need to be combined differently when there are duplicates, depending on the key:combine Div = div combine Sub = (-)
then fromListWithKey can be used as follows:fromListWithKey combine [(Div, 2), (Div, 6), (Sub, 2), (Sub, 3)] = fromList [(Div, 3), (Sub, 1)]
More generally, duplicate entries are accumulated as follows;fromListWith f [(k, a), (k, b), (k, c), (k, d)] = fromList [(k, f k d (f k c (f k b a)))]
-
ghc GHC.Builtin.Names No documentation available.
-
ghc GHC.Builtin.Names No documentation available.
-
ghc GHC.Builtin.Names No documentation available.
-
ghc GHC.Builtin.Names No documentation available.
fromListWith :: (a -> a -> a) -> [(Key, a)] -> Word64Map aghc GHC.Data.Word64Map.Internal 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
fromListWithKey :: (Key -> a -> a -> a) -> [(Key, a)] -> Word64Map aghc GHC.Data.Word64Map.Internal Build a map from a list of key/value pairs with a combining function. See also fromAscListWithKey'.
let f key new_value old_value = show key ++ ":" ++ new_value ++ "|" ++ old_value fromListWithKey f [(5,"a"), (5,"b"), (3,"b"), (3,"a"), (5,"c")] == fromList [(3, "3:a|b"), (5, "5:c|5:b|a")] fromListWithKey f [] == empty