Merge pull request #144072 from polykernel/lib-lists-mutuallyexclusive-optimization

Changed files
+2 -5
lib
+2 -5
lib/lists.nix
···
unique [ 3 2 3 4 ]
=> [ 3 2 4 ]
*/
-
unique = foldl' (acc: e: if elem e acc then acc else acc ++ [ e ]) [];
+
unique = foldl' (acc: e: if elem e acc then acc else acc ++ [ e ]) [];
/* Intersects list 'e' and another list. O(nm) complexity.
···
/* Test if two lists have no common element.
It should be slightly more efficient than (intersectLists a b == [])
*/
-
mutuallyExclusive = a: b:
-
(builtins.length a) == 0 ||
-
(!(builtins.elem (builtins.head a) b) &&
-
mutuallyExclusive (builtins.tail a) b);
+
mutuallyExclusive = a: b: length a == 0 || !(any (x: elem x a) b);
}