Loading lib/default.nix +1 −1 Original line number Diff line number Diff line Loading @@ -92,7 +92,7 @@ let concatMap flatten remove findSingle findFirst any all count optional optionals toList range replicate partition zipListsWith zipLists reverseList listDfs toposort sort naturalSort compareLists take drop sublist last init crossLists unique intersectLists drop sublist last init crossLists unique allUnique intersectLists subtractLists mutuallyExclusive groupBy groupBy'; inherit (self.strings) concatStrings concatMapStrings concatImapStrings intersperse concatStringsSep concatMapStringsSep Loading lib/lists.nix +13 −0 Original line number Diff line number Diff line Loading @@ -821,6 +821,19 @@ rec { */ unique = foldl' (acc: e: if elem e acc then acc else acc ++ [ e ]) []; /* Check if list contains only unique elements. O(n^2) complexity. Type: allUnique :: [a] -> bool Example: allUnique [ 3 2 3 4 ] => false allUnique [ 3 2 4 1 ] => true */ allUnique = list: (length (unique list) == length list); /* Intersects list 'e' and another list. O(nm) complexity. Example: Loading lib/tests/misc.nix +9 −0 Original line number Diff line number Diff line Loading @@ -726,6 +726,15 @@ runTests { expected = 7; }; testAllUnique_true = { expr = allUnique [ 3 2 4 1 ]; expected = true; }; testAllUnique_false = { expr = allUnique [ 3 2 3 4 ]; expected = false; }; # ATTRSETS testConcatMapAttrs = { Loading Loading
lib/default.nix +1 −1 Original line number Diff line number Diff line Loading @@ -92,7 +92,7 @@ let concatMap flatten remove findSingle findFirst any all count optional optionals toList range replicate partition zipListsWith zipLists reverseList listDfs toposort sort naturalSort compareLists take drop sublist last init crossLists unique intersectLists drop sublist last init crossLists unique allUnique intersectLists subtractLists mutuallyExclusive groupBy groupBy'; inherit (self.strings) concatStrings concatMapStrings concatImapStrings intersperse concatStringsSep concatMapStringsSep Loading
lib/lists.nix +13 −0 Original line number Diff line number Diff line Loading @@ -821,6 +821,19 @@ rec { */ unique = foldl' (acc: e: if elem e acc then acc else acc ++ [ e ]) []; /* Check if list contains only unique elements. O(n^2) complexity. Type: allUnique :: [a] -> bool Example: allUnique [ 3 2 3 4 ] => false allUnique [ 3 2 4 1 ] => true */ allUnique = list: (length (unique list) == length list); /* Intersects list 'e' and another list. O(nm) complexity. Example: Loading
lib/tests/misc.nix +9 −0 Original line number Diff line number Diff line Loading @@ -726,6 +726,15 @@ runTests { expected = 7; }; testAllUnique_true = { expr = allUnique [ 3 2 4 1 ]; expected = true; }; testAllUnique_false = { expr = allUnique [ 3 2 3 4 ]; expected = false; }; # ATTRSETS testConcatMapAttrs = { Loading