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
commit 8437d13b56
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

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