diff options
author | Simon Hafner <hafnersimon@gmail.com> | 2014-02-10 12:44:44 -0600 |
---|---|---|
committer | Simon Hafner <hafnersimon@gmail.com> | 2014-02-10 12:44:44 -0600 |
commit | 0b5c14962e63f3aca0c7480de2428568b4ba6650 (patch) | |
tree | be69ed29c547005c99493cbd27e98987d96b3074 | |
parent | 5d939570488706553bdb3dc58d7902e454cd6de4 (diff) | |
download | Nim-0b5c14962e63f3aca0c7480de2428568b4ba6650.tar.gz |
added `map` to sets
-rw-r--r-- | lib/pure/collections/sets.nim | 4 | ||||
-rw-r--r-- | tests/stdlib/tsets.nim | 13 |
2 files changed, 17 insertions, 0 deletions
diff --git a/lib/pure/collections/sets.nim b/lib/pure/collections/sets.nim index e6ab617e5..12fa2625b 100644 --- a/lib/pure/collections/sets.nim +++ b/lib/pure/collections/sets.nim @@ -241,3 +241,7 @@ proc `<=`*[A](s, t: TSet[A]): bool = proc `==`*[A](s, t: TSet[A]): bool = s.counter == t.counter and s <= t + +proc map*[A, B](data: TSet[A], op: proc (x: A): B {.closure.}): TSet[A] = + result = initSet[B]() + for i in data: result.incl(op(i)) diff --git a/tests/stdlib/tsets.nim b/tests/stdlib/tsets.nim new file mode 100644 index 000000000..a30373d37 --- /dev/null +++ b/tests/stdlib/tsets.nim @@ -0,0 +1,13 @@ +discard """ + output: '''true''' +""" + +import sets +var + a = initSet[int]() + b = initSet[int]() + +for i in 0..5: a.incl(i) +for i in 1..6: b.incl(i) + +echo map(a, proc(x: int): int = x + 1) == b |