From 85d3fd3e3cf6a7cd2ec361b3bb996f8587f8c34c Mon Sep 17 00:00:00 2001 From: Nicolas Pierron Date: Wed, 27 Apr 2011 18:41:34 +0000 Subject: [PATCH] lists: Add imap function to iterate over a list with the index of each element. svn path=/nixpkgs/trunk/; revision=27013 --- pkgs/lib/lists.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pkgs/lib/lists.nix b/pkgs/lib/lists.nix index a843addaf9e5..6adda85a087e 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) [];