summary refs log tree commit diff
path: root/lib/lists.nix
diff options
context:
space:
mode:
authorzimbatm <zimbatm@zimbatm.com>2017-07-04 23:29:23 +0100
committerGitHub <noreply@github.com>2017-07-04 23:29:23 +0100
commit4d545297d85c8f32f7ab496d0759f40d881bd61d (patch)
treec3309bda805bce2028f2fe53b6662bd4a3352936 /lib/lists.nix
parenta0fa61788b930b05afc475b61a9963655e969ef9 (diff)
downloadnixpkgs-4d545297d85c8f32f7ab496d0759f40d881bd61d.tar
nixpkgs-4d545297d85c8f32f7ab496d0759f40d881bd61d.tar.gz
nixpkgs-4d545297d85c8f32f7ab496d0759f40d881bd61d.tar.bz2
nixpkgs-4d545297d85c8f32f7ab496d0759f40d881bd61d.tar.lz
nixpkgs-4d545297d85c8f32f7ab496d0759f40d881bd61d.tar.xz
nixpkgs-4d545297d85c8f32f7ab496d0759f40d881bd61d.tar.zst
nixpkgs-4d545297d85c8f32f7ab496d0759f40d881bd61d.zip
lib: introduce imap0, imap1 (#25543)
* lib: introduce imap0, imap1

For historical reasons, imap starts counting at 1 and it's not
consistent with the rest of the lib.

So for now we split imap into imap0 that starts counting at zero and
imap1 that starts counting at 1. And imap is marked as deprecated.

See https://github.com/NixOS/nixpkgs/commit/c71e2d42359f9900ea2c290d141c0d606471da16#commitcomment-21873221

* replace uses of lib.imap

* lib: move imap to deprecated.nix
Diffstat (limited to 'lib/lists.nix')
-rw-r--r--lib/lists.nix14
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/lists.nix b/lib/lists.nix
index fd746f4f97b..a04b1b27893 100644
--- a/lib/lists.nix
+++ b/lib/lists.nix
@@ -77,15 +77,21 @@ rec {
   */
   foldl' = builtins.foldl' or foldl;
 
-  /* Map with index
+  /* Map with index starting from 0
 
-     FIXME(zimbatm): why does this start to count at 1?
+     Example:
+       imap0 (i: v: "${v}-${toString i}") ["a" "b"]
+       => [ "a-0" "b-1" ]
+  */
+  imap0 = f: list: genList (n: f n (elemAt list n)) (length list);
+
+  /* Map with index starting from 1
 
      Example:
-       imap (i: v: "${v}-${toString i}") ["a" "b"]
+       imap1 (i: v: "${v}-${toString i}") ["a" "b"]
        => [ "a-1" "b-2" ]
   */
-  imap = f: list: genList (n: f (n + 1) (elemAt list n)) (length list);
+  imap1 = f: list: genList (n: f (n + 1) (elemAt list n)) (length list);
 
   /* Map and concatenate the result.