mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-04 12:07:51 +00:00
added titer7 test
This commit is contained in:
57
tests/run/titer7.nim
Normal file
57
tests/run/titer7.nim
Normal file
@@ -0,0 +1,57 @@
|
||||
discard """
|
||||
output: '''--- evens
|
||||
2
|
||||
4
|
||||
6
|
||||
8
|
||||
--- squares
|
||||
1
|
||||
4
|
||||
9
|
||||
16
|
||||
25
|
||||
36
|
||||
49
|
||||
64
|
||||
81
|
||||
--- squares of evens, only
|
||||
4
|
||||
16
|
||||
36
|
||||
64'''
|
||||
"""
|
||||
|
||||
iterator `/`[T](sequence: seq[T],
|
||||
filter: proc(e:T):bool {.closure.}) : T =
|
||||
for element in sequence:
|
||||
if (filter(element)):
|
||||
yield element
|
||||
|
||||
iterator `>>`[I,O](sequence: seq[I],
|
||||
map: proc(e:I):O {.closure.}) : O =
|
||||
for element in sequence:
|
||||
yield map(element)
|
||||
|
||||
iterator `/>>`[I,O](sequence: seq[I],
|
||||
filtermap:tuple[
|
||||
f:proc(e:I):bool {.closure.},
|
||||
m:proc(e:I):O {.closure.}]) : O =
|
||||
for element in sequence:
|
||||
if (filtermap.f(element)):
|
||||
yield filtermap.m(element)
|
||||
|
||||
proc isEven(x:int): bool {.closure.} = result =
|
||||
(x and 1) == 0
|
||||
|
||||
proc square(x:int): int {.closure.} = result =
|
||||
x * x
|
||||
|
||||
let list = @[1,2,3,4,5,6,7,8,9]
|
||||
|
||||
echo ("--- evens")
|
||||
for item in list / isEven : echo(item)
|
||||
echo ("--- squares")
|
||||
for item in list >> square : echo(item)
|
||||
echo ("--- squares of evens, only")
|
||||
# next line doesn't compile. Generic types are not inferred
|
||||
for item in list />> (isEven, square) : echo(item)
|
||||
Reference in New Issue
Block a user