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/attrsets.nix | |
parent | d82543f22d9e778a051ee866e6d2d8716a1cae0d (diff) | |
parent | 1c2a2b0a0848d58407fb4ff73a8dc1e854f5a270 (diff) |
Merge pull request #110742 from siraben/deprecate-fold
Diffstat (limited to 'lib/attrsets.nix')
-rw-r--r-- | lib/attrsets.nix | 8 |
1 files changed, 4 insertions, 4 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 |