diff --git a/lib/pure/collections/sets.nim b/lib/pure/collections/sets.nim index e6ab617e50..12fa2625b2 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 0000000000..a30373d376 --- /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