Unverified Commit 8437d13b authored by Robert Hensing's avatar Robert Hensing Committed by GitHub
Browse files

Merge pull request #296272 from hsjobeki/lib/foldl-prime

lib.foldl': avoid unnecessary function call
parents 39cfb51a c8885b86
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -228,7 +228,15 @@ rec {

    `acc`

    : The initial accumulator value
    : The initial accumulator value.

      The accumulator value is evaluated in any case before the first iteration starts.

      To avoid evaluation even before the `list` argument is given an eta expansion can be used:

      ```nix
      list: lib.foldl' op acc list
      ```

    `list`

@@ -254,13 +262,11 @@ rec {
  foldl' =
    op:
    acc:
    list:

    # The builtin `foldl'` is a bit lazier than one might expect.
    # See https://github.com/NixOS/nix/pull/7158.
    # In particular, the initial accumulator value is not forced before the first iteration starts.
    builtins.seq acc
      (builtins.foldl' op acc list);
      (builtins.foldl' op acc);

  /**
    Map with index starting from 0