From 906202b22253deb7eb3bf78bf6e274129b9c0a74 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Tue, 24 Aug 2021 22:26:06 +0200 Subject: [PATCH] lib: lists: add countValues --- lib/lists.nix | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/lists.nix b/lib/lists.nix index a3720bf..190198e 100644 --- a/lib/lists.nix +++ b/lib/lists.nix @@ -1,8 +1,22 @@ { lib, ... }: let - inherit (lib) filter; + inherit (lib) filter foldl'; in { + # Count the number of appararitions of each value in a list. + # + # countValues :: + # [ any ] -> ({ any = int; }) + countValues = + let + addToCount = acc: x: + let + v = toString x; + in + acc // { ${v} = (acc.${v} or 0) + 1; }; + in + foldl' addToCount { }; + # Filter a list using a predicate function after applying a map. # # mapFilter ::