Please read this: <https://nim-lang.org/docs/manual.html#iterators-and-the-for-statement>
iterators are not used like procedures.
iterator m2(x: int): int =
for i in 1..x:
if i mod 2 == 0:
yield i
iterator m3(x: int): int =
for i in 1..x:
if i mod 3 == 0:
yield i
iterator m(m, x: int): int =
if m == 2:
for i in m2(x):
yield i
else:
for i in m3(x):
yield i
for i in m(2, 12):
echo i
Run
