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

lib.foldl': avoid unnecessary function call
This commit is contained in:
Robert Hensing
2024-03-17 19:19:45 +01:00
committed by GitHub
+10 -4
View File
@@ -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