Unverified Commit f4d36941 authored by Aliaksandr's avatar Aliaksandr
Browse files

lib: deprecate fold

parent 9e0124a9
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;
      };
    };