Commit 66261e99 authored by Felix Buehler's avatar Felix Buehler
Browse files

lib.lists.allUnique: init

parent b5bd1053
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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
+13 −0
Original line number Diff line number Diff line
@@ -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:
+9 −0
Original line number Diff line number Diff line
@@ -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 = {