summary refs log tree commit diff stats
path: root/lib/pure/collections/sets.nim
diff options
context:
space:
mode:
authorSimon Hafner <hafnersimon@gmail.com>2014-01-31 18:22:27 -0600
committerSimon Hafner <hafnersimon@gmail.com>2014-01-31 18:22:27 -0600
commit2c5a2d07fb3bb25dcb590d61882f88528ea17e91 (patch)
tree33a360aa77e7f205af243ed116066cbb483988d1 /lib/pure/collections/sets.nim
parente01fb17d023b046b3403a4413a637d24a9dc492f (diff)
downloadNim-2c5a2d07fb3bb25dcb590d61882f88528ea17e91.tar.gz
sets equivalence
Diffstat (limited to 'lib/pure/collections/sets.nim')
-rw-r--r--lib/pure/collections/sets.nim17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/pure/collections/sets.nim b/lib/pure/collections/sets.nim
index 7259772aa..e478a2ce1 100644
--- a/lib/pure/collections/sets.nim
+++ b/lib/pure/collections/sets.nim
@@ -224,3 +224,20 @@ proc toOrderedSet*[A](keys: openArray[A]): TOrderedSet[A] =
 proc `$`*[A](s: TOrderedSet[A]): string =
   ## The `$` operator for ordered hash sets.
   dollarImpl()
+
+proc `<`*[A](s, t: TSet[A]): bool =
+  ## Is a a strict subset of b?
+  s.counter != t.counter and s <= t
+
+proc `<=`*[A](s, t: TSet[A]): bool =
+  ## Is a a subset of b?
+  result = false
+  if s.counter > t.counter: return
+  result = true
+  for item in s:
+    if not(t.contains(item)):
+      result = false
+      return
+      
+proc `==`*[A](s, t: TSet[A]): bool =
+  s.counter == t.counter and s <= t