diff options
author | Ben Siraphob <bensiraphob@gmail.com> | 2021-07-27 15:13:31 +0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-27 15:13:31 +0700 |
commit | b63a54f81ce96391e6da6aab5965926e7cdbce47 (patch) | |
tree | ae8f9eca6965b3eb7e919548723c46ba663525c2 /lib | |
parent | d82543f22d9e778a051ee866e6d2d8716a1cae0d (diff) | |
parent | 1c2a2b0a0848d58407fb4ff73a8dc1e854f5a270 (diff) |
Merge pull request #110742 from siraben/deprecate-fold
Diffstat (limited to 'lib')
-rw-r--r-- | lib/attrsets.nix | 8 | ||||
-rw-r--r-- | lib/deprecated.nix | 10 | ||||
-rw-r--r-- | lib/trivial.nix | 2 |
3 files changed, 10 insertions, 10 deletions
diff --git a/lib/attrsets.nix b/lib/attrsets.nix index 5c787940cb0cf..0b61819f6b4b4 100644 --- a/lib/attrsets.nix +++ b/lib/attrsets.nix @@ -5,7 +5,7 @@ let inherit (builtins) head tail length; inherit (lib.trivial) and; inherit (lib.strings) concatStringsSep sanitizeDerivationName; - inherit (lib.lists) fold concatMap concatLists; + inherit (lib.lists) fold foldr concatMap concatLists; in rec { @@ -152,8 +152,8 @@ rec { => { a = [ 2 3 ]; } */ foldAttrs = op: nul: list_of_attrs: - fold (n: a: - fold (name: o: + foldr (n: a: + foldr (name: o: o // { ${name} = op n.${name} (a.${name} or nul); } ) a (attrNames n) ) {} list_of_attrs; @@ -455,7 +455,7 @@ rec { => true */ matchAttrs = pattern: attrs: assert isAttrs pattern; - fold and true (attrValues (zipAttrsWithNames (attrNames pattern) (n: values: + foldr and true (attrValues (zipAttrsWithNames (attrNames pattern) (n: values: let pat = head values; val = head (tail values); in if length values == 1 then false else if isAttrs pat then isAttrs val && matchAttrs pat val diff --git a/lib/deprecated.nix b/lib/deprecated.nix index be0ef904c66de..ddce69f160ccd 100644 --- a/lib/deprecated.nix +++ b/lib/deprecated.nix @@ -77,11 +77,11 @@ rec { # Output : are reqs satisfied? It's asserted. checkReqs = attrSet: argList: condList: ( - fold lib.and true + foldr lib.and true (map (x: let name = (head x); in ((checkFlag attrSet name) -> - (fold lib.and true + (foldr lib.and true (map (y: let val=(getValue attrSet argList y); in (val!=null) && (val!=false)) (tail x))))) condList)); @@ -177,7 +177,7 @@ rec { # merge attributes with custom function handling the case that the attribute # exists in both sets mergeAttrsWithFunc = f: set1: set2: - fold (n: set: if set ? ${n} + foldr (n: set: if set ? ${n} then setAttr set n (f set.${n} set2.${n}) else set ) (set2 // set1) (attrNames set2); @@ -196,7 +196,7 @@ rec { mergeAttrsNoOverride = { mergeLists ? ["buildInputs" "propagatedBuildInputs"], overrideSnd ? [ "buildPhase" ] }: attrs1: attrs2: - fold (n: set: + foldr (n: set: setAttr set n ( if set ? ${n} then # merge if elem n mergeLists # attribute contains list, merge them by concatenating @@ -224,7 +224,7 @@ rec { mergeAttrBy2 = { mergeAttrBy = lib.mergeAttrs; } // (maybeAttr "mergeAttrBy" {} x) // (maybeAttr "mergeAttrBy" {} y); in - fold lib.mergeAttrs {} [ + foldr lib.mergeAttrs {} [ x y (mapAttrs ( a: v: # merge special names using given functions if x ? ${a} diff --git a/lib/trivial.nix b/lib/trivial.nix index e1581f1e91d6b..c8ef5599ccde9 100644 --- a/lib/trivial.nix +++ b/lib/trivial.nix @@ -308,7 +308,7 @@ rec { info = msg: builtins.trace "INFO: ${msg}"; - showWarnings = warnings: res: lib.fold (w: x: warn w x) res warnings; + showWarnings = warnings: res: lib.foldr (w: x: warn w x) res warnings; ## Function annotations |