From 1c2a2b0a0848d58407fb4ff73a8dc1e854f5a270 Mon Sep 17 00:00:00 2001 From: Ben Siraphob Date: Mon, 25 Jan 2021 13:57:48 +0700 Subject: treewide: fold -> foldr --- lib/attrsets.nix | 8 ++++---- lib/deprecated.nix | 10 +++++----- lib/trivial.nix | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) (limited to 'lib') diff --git a/lib/attrsets.nix b/lib/attrsets.nix index d91d7a0cd47..d8bc73ca874 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; @@ -433,7 +433,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 be0ef904c66..ddce69f160c 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 268f39d3210..5ee7fc99206 100644 --- a/lib/trivial.nix +++ b/lib/trivial.nix @@ -305,7 +305,7 @@ rec { warn = msg: builtins.trace "warning: ${msg}"; 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 -- cgit 1.4.1