Hoogle Search
Within LTS Haskell 24.4 (ghc-9.10.2)
Note that Stackage only displays results for the latest LTS and Nightly snapshot. Learn more.
fromList :: IsList l => [Item l] -> lxmonad-contrib XMonad.Prelude The fromList function constructs the structure l from the given list of Item l
type family
FromList (a1 :: [a]) :: NonEmpty asingletons-base Data.List.NonEmpty.Singletons No documentation available.
-
hetero-parameter-list Data.HeteroParList No documentation available.
type
FromList = NonEmpty TableRefpostgresql-syntax PostgresqlSyntax.Ast References
from_list: | table_ref | from_list ',' table_ref
fromListN :: IsList l => Int -> [Item l] -> lbase GHC.Exts The fromListN function takes the input list's length and potentially uses it to construct the structure l more efficiently compared to fromList. If the given number does not equal to the input list's length the behaviour of fromListN is not specified.
fromListN (length xs) xs == fromList xs
fromListN :: IsList l => Int -> [Item l] -> lbase GHC.IsList The fromListN function takes the input list's length and potentially uses it to construct the structure l more efficiently compared to fromList. If the given number does not equal to the input list's length the behaviour of fromListN is not specified.
fromListN (length xs) xs == fromList xs
fromListWith :: (a -> a -> a) -> [(Key, a)] -> IntMap acontainers Data.IntMap.Internal Build a map from a list of key/value pairs with a combining function. See also fromAscListWith.
fromListWith (++) [(5,"a"), (5,"b"), (3,"x"), (5,"c")] == fromList [(3, "x"), (5, "cba")] fromListWith (++) [] == empty
Note the reverse ordering of "cba" in the example. The symmetric combining function f is applied in a left-fold over the list, as f new old.Performance
You should ensure that the given f is fast with this order of arguments. Symmetric functions may be slow in one order, and fast in another. For the common case of collecting values of matching keys in a list, as above: The complexity of (++) a b is <math>, so it is fast when given a short list as its first argument. Thus:fromListWith (++) (replicate 1000000 (3, "x")) -- O(n), fast fromListWith (flip (++)) (replicate 1000000 (3, "x")) -- O(n²), extremely slow
because they evaluate as, respectively:fromList [(3, "x" ++ ("x" ++ "xxxxx..xxxxx"))] -- O(n) fromList [(3, ("xxxxx..xxxxx" ++ "x") ++ "x")] -- O(n²)
Thus, to get good performance with an operation like (++) while also preserving the same order as in the input list, reverse the input:fromListWith (++) (reverse [(5,"a"), (5,"b"), (5,"c")]) == fromList [(5, "abc")]
and it is always fast to combine singleton-list values [v] with fromListWith (++), as in:fromListWith (++) $ reverse $ map (\(k, v) -> (k, [v])) someListOfTuples
fromListWithKey :: (Key -> a -> a -> a) -> [(Key, a)] -> IntMap acontainers Data.IntMap.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
Also see the performance note on fromListWith.fromListWith :: (a -> a -> a) -> [(Key, a)] -> IntMap acontainers Data.IntMap.Lazy Build a map from a list of key/value pairs with a combining function. See also fromAscListWith.
fromListWith (++) [(5,"a"), (5,"b"), (3,"x"), (5,"c")] == fromList [(3, "x"), (5, "cba")] fromListWith (++) [] == empty
Note the reverse ordering of "cba" in the example. The symmetric combining function f is applied in a left-fold over the list, as f new old.Performance
You should ensure that the given f is fast with this order of arguments. Symmetric functions may be slow in one order, and fast in another. For the common case of collecting values of matching keys in a list, as above: The complexity of (++) a b is <math>, so it is fast when given a short list as its first argument. Thus:fromListWith (++) (replicate 1000000 (3, "x")) -- O(n), fast fromListWith (flip (++)) (replicate 1000000 (3, "x")) -- O(n²), extremely slow
because they evaluate as, respectively:fromList [(3, "x" ++ ("x" ++ "xxxxx..xxxxx"))] -- O(n) fromList [(3, ("xxxxx..xxxxx" ++ "x") ++ "x")] -- O(n²)
Thus, to get good performance with an operation like (++) while also preserving the same order as in the input list, reverse the input:fromListWith (++) (reverse [(5,"a"), (5,"b"), (5,"c")]) == fromList [(5, "abc")]
and it is always fast to combine singleton-list values [v] with fromListWith (++), as in:fromListWith (++) $ reverse $ map (\(k, v) -> (k, [v])) someListOfTuples
fromListWithKey :: (Key -> a -> a -> a) -> [(Key, a)] -> IntMap acontainers Data.IntMap.Lazy 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
Also see the performance note on fromListWith.