summary refs log tree commit diff stats
path: root/lib/pure/collections/sets.nim
diff options
context:
space:
mode:
authordef <dennis@felsin9.de>2014-07-14 15:03:09 +0200
committerdef <dennis@felsin9.de>2014-07-14 15:03:09 +0200
commit5bfea58ffb9fd731131bbbd3f3d077cb69c5f419 (patch)
treeaf43451f93c07a762118b354a87c3b86bdc04ae0 /lib/pure/collections/sets.nim
parentc260b22fbca0e8a3be903c1c6db2027cfcf1c7f2 (diff)
downloadNim-5bfea58ffb9fd731131bbbd3f3d077cb69c5f419.tar.gz
Add missing difference and to sets module
Diffstat (limited to 'lib/pure/collections/sets.nim')
-rw-r--r--lib/pure/collections/sets.nim10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/pure/collections/sets.nim b/lib/pure/collections/sets.nim
index 4ba67cb2e..2f0c4d3d2 100644
--- a/lib/pure/collections/sets.nim
+++ b/lib/pure/collections/sets.nim
@@ -167,6 +167,12 @@ proc intersection*[A](s1, s2: TSet[A]): TSet[A] =
   for item in s1:
     if item in s2: incl(result, item)
 
+proc difference*[A](s1, s2: TSet[A]): TSet[A] =
+  ## returns a new set of all items that are contained in `s1`, but not in `s2`
+  result = s1
+  for item in s2:
+    if contains(result, item): excl(result, item)
+
 proc symmetricDifference*[A](s1, s2: TSet[A]): TSet[A] =
   ## returns a new set of all items that are contained in either
   ## `s1` or `s2`, but not both
@@ -182,6 +188,10 @@ proc `*`*[A](s1, s2: TSet[A]): TSet[A] {.inline.} =
   ## alias for `intersection`
   result = intersection(s1, s2)
 
+proc `-`*[A](s1, s2: TSet[A]): TSet[A] {.inline.} =
+  ## alias for `difference`
+  result = difference(s1, s2)
+
 proc `-+-`*[A](s1, s2: TSet[A]): TSet[A] {.inline.} =
   ## alias for `symmetricDifference`
   result = symmetricDifference(s1, s2)