summary refs log tree commit diff
path: root/lib/lists.nix
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2017-07-02 09:32:43 +0200
committerJohn Ericson <John.Ericson@Obsidian.Systems>2017-07-07 12:02:29 -0400
commitdfc004e69c23cb48cce2c7537169a81b299a0af9 (patch)
treeb297211c5ec12a3882e0940925687d74e4ae53ef /lib/lists.nix
parent5afcdc88fa7ce9583eecec136de49685923e8df7 (diff)
downloadnixpkgs-dfc004e69c23cb48cce2c7537169a81b299a0af9.tar
nixpkgs-dfc004e69c23cb48cce2c7537169a81b299a0af9.tar.gz
nixpkgs-dfc004e69c23cb48cce2c7537169a81b299a0af9.tar.bz2
nixpkgs-dfc004e69c23cb48cce2c7537169a81b299a0af9.tar.lz
nixpkgs-dfc004e69c23cb48cce2c7537169a81b299a0af9.tar.xz
nixpkgs-dfc004e69c23cb48cce2c7537169a81b299a0af9.tar.zst
nixpkgs-dfc004e69c23cb48cce2c7537169a81b299a0af9.zip
lib.lists.mutuallyExclusive: add function
Diffstat (limited to 'lib/lists.nix')
-rw-r--r--lib/lists.nix8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/lists.nix b/lib/lists.nix
index a04b1b27893..6a8fd8a1840 100644
--- a/lib/lists.nix
+++ b/lib/lists.nix
@@ -477,4 +477,12 @@ rec {
   */
   subtractLists = e: filter (x: !(elem x e));
 
+  /* 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);
+
 }