diff options
author | Araq <rumpf_a@web.de> | 2014-07-15 20:27:30 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2014-07-15 20:27:30 +0200 |
commit | 0251c081f69ee7e2814e08b657751a7c5bd93d1a (patch) | |
tree | bf9e7595e982a24ec793990d2874040bc724222f /lib/pure/collections | |
parent | c14e7565f8a3ef49568ea4f9d13a68b3fb54efb3 (diff) | |
parent | e0404609436eafdd7da79166fdb88a09d4f16451 (diff) | |
download | Nim-0251c081f69ee7e2814e08b657751a7c5bd93d1a.tar.gz |
Merge branch 'devel' of https://github.com/Araq/Nimrod into devel
Diffstat (limited to 'lib/pure/collections')
-rw-r--r-- | lib/pure/collections/sets.nim | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/pure/collections/sets.nim b/lib/pure/collections/sets.nim index 4ba67cb2e..f1eed0004 100644 --- a/lib/pure/collections/sets.nim +++ b/lib/pure/collections/sets.nim @@ -167,6 +167,13 @@ 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 = initSet[A]() + for item in s1: + if not contains(s2, item): + incl(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 +189,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) |