summary refs log tree commit diff
path: root/pkgs/lib/lists.nix
diff options
context:
space:
mode:
authorNicolas Pierron <nicolas.b.pierron@gmail.com>2011-04-27 18:41:34 +0000
committerNicolas Pierron <nicolas.b.pierron@gmail.com>2011-04-27 18:41:34 +0000
commit85d3fd3e3cf6a7cd2ec361b3bb996f8587f8c34c (patch)
tree3b9e07234f0104aaa14aa00b25221401450c1b25 /pkgs/lib/lists.nix
parent781770eaa94814a9c68876b639014a637c9ae42a (diff)
downloadnixpkgs-85d3fd3e3cf6a7cd2ec361b3bb996f8587f8c34c.tar
nixpkgs-85d3fd3e3cf6a7cd2ec361b3bb996f8587f8c34c.tar.gz
nixpkgs-85d3fd3e3cf6a7cd2ec361b3bb996f8587f8c34c.tar.bz2
nixpkgs-85d3fd3e3cf6a7cd2ec361b3bb996f8587f8c34c.tar.lz
nixpkgs-85d3fd3e3cf6a7cd2ec361b3bb996f8587f8c34c.tar.xz
nixpkgs-85d3fd3e3cf6a7cd2ec361b3bb996f8587f8c34c.tar.zst
nixpkgs-85d3fd3e3cf6a7cd2ec361b3bb996f8587f8c34c.zip
lists: Add imap function to iterate over a list with the index of each
element.

svn path=/nixpkgs/trunk/; revision=27013
Diffstat (limited to 'pkgs/lib/lists.nix')
-rw-r--r--pkgs/lib/lists.nix6
1 files changed, 5 insertions, 1 deletions
diff --git a/pkgs/lib/lists.nix b/pkgs/lib/lists.nix
index a843addaf9e..6adda85a087 100644
--- a/pkgs/lib/lists.nix
+++ b/pkgs/lib/lists.nix
@@ -1,7 +1,7 @@
 # General list operations.
 
 rec {
-  inherit (builtins) head tail isList;
+  inherit (builtins) head tail length isList;
 
 
   # Create a list consisting of a single element.  `singleton x' is
@@ -27,6 +27,10 @@ rec {
     then nul
     else foldl op (op nul (head list)) (tail list);
 
+  # map with index: `imap (i: v: "${v}-${toString i}") ["a" "b"] ==
+  # ["a-1" "b-2"]'
+  imap = f: list:
+    zipListsWith f (range 1 (length list)) list;
 
   # Concatenate a list of lists.
   concatLists = fold (x: y: x ++ y) [];