Unverified Commit 3ae81921 authored by Johannes Kirschbauer's avatar Johannes Kirschbauer Committed by GitHub
Browse files

lib: deprecate fold (#456532)

parents 364d1f76 05616bc0
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -9,7 +9,6 @@ let
    min
    id
    warn
    pipe
    ;
  inherit (lib.attrsets) mapAttrs attrNames;
  inherit (lib) max;
@@ -144,10 +143,13 @@ rec {
    fold' 0;

  /**
    `fold` is an alias of `foldr` for historic reasons
    `fold` is an alias of `foldr` for historic reasons.

    ::: {.warning}
    This function will be removed in 26.05.
    :::
  */
  # FIXME(Profpatsch): deprecate?
  fold = foldr;
  fold = warn "fold has been deprecated, use foldr instead" foldr;

  /**
    “left fold”, like `foldr`, but from the left:
+6 −9
Original line number Diff line number Diff line
@@ -1288,25 +1288,23 @@ runTests {
    expected = [ 15 ];
  };

  testFold =
  testFoldr =
    let
      f = op: fold: fold op 0 (range 0 100);
      # fold with associative operator
      f = op: foldr: foldr op 0 (range 0 100);
      # foldr with associative operator
      assoc = f builtins.add;
      # fold with non-associative operator
      # foldr with non-associative operator
      nonAssoc = f builtins.sub;
    in
    {
      expr = {
        assocRight = assoc foldr;
        # right fold with assoc operator is same as left fold
        # foldr with assoc operator is same as foldl
        assocRightIsLeft = assoc foldr == assoc foldl;
        nonAssocRight = nonAssoc foldr;
        nonAssocLeft = nonAssoc foldl;
        # with non-assoc operator the fold results are not the same
        # with non-assoc operator the foldr results are not the same
        nonAssocRightIsNotLeft = nonAssoc foldl != nonAssoc foldr;
        # fold is an alias for foldr
        foldIsRight = nonAssoc fold == nonAssoc foldr;
      };
      expected = {
        assocRight = 5050;
@@ -1314,7 +1312,6 @@ runTests {
        nonAssocRight = 50;
        nonAssocLeft = (-5050);
        nonAssocRightIsNotLeft = true;
        foldIsRight = true;
      };
    };

+1 −1
Original line number Diff line number Diff line
@@ -30,7 +30,7 @@ let
  moduleConfigFile = pkgs.writeText "module-config.yaml" (
    lib.generators.toYAML { } (
      lib.filterAttrs (_: v: v != null) (
        lib.fold lib.recursiveUpdate { } [
        lib.foldr lib.recursiveUpdate { } [
          yamlConfig
          cfg.settings
        ]
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@
}:

let
  unionOfDisjoints = lib.fold lib.attrsets.unionOfDisjoint { };
  unionOfDisjoints = lib.foldr lib.attrsets.unionOfDisjoint { };

  addTests =
    attrPath: drv: