diff options
author | cooldome <cdome@bk.ru> | 2019-04-27 12:41:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-27 12:41:08 +0100 |
commit | 3647c03cadfce2ccaec136590a8acd8a736d0bb0 (patch) | |
tree | 0ed7fdf1b2fa167c8cd6e4e7db0bfd83cd28ec63 /lib/pure/collections/sequtils.nim | |
parent | 69755542f48618939b3b43f63dbd59b92c518c61 (diff) | |
download | Nim-3647c03cadfce2ccaec136590a8acd8a736d0bb0.tar.gz |
reimplement_pr_10974 (#11130)
Diffstat (limited to 'lib/pure/collections/sequtils.nim')
-rw-r--r-- | lib/pure/collections/sequtils.nim | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/pure/collections/sequtils.nim b/lib/pure/collections/sequtils.nim index 253340379..e39c1fb80 100644 --- a/lib/pure/collections/sequtils.nim +++ b/lib/pure/collections/sequtils.nim @@ -949,6 +949,14 @@ macro mapLiterals*(constructor, op: untyped; ## works for nested tuples of arrays of sets etc. result = mapLitsImpl(constructor, op, nested.boolVal) +iterator items*[T](xs: iterator: T): T = + ## iterates over each element yielded by a closure iterator. This may + ## not seem particularly useful on its own, but this allows closure + ## iterators to be used by the the mapIt, filterIt, allIt, anyIt, etc. + ## templates. + for x in xs(): + yield x + when isMainModule: import strutils from algorithm import sorted @@ -1382,5 +1390,13 @@ when isMainModule: doAssert outp == @[@["a", "b"], @["c", "d"]] + block: + proc iter(len: int): auto = + result = iterator(): int = + for i in 0..<len: + yield i + + doAssert: iter(3).mapIt(2*it).foldl(a + b) == 6 + when not defined(testing): echo "Finished doc tests" |