blob: d7c0ec0e344e50b2ac330a9a32d574b251af1db4 (
plain) (
tree)
|
|
discard """
file: "tclosure.nim"
output: "2 4 6 8 10"
disabled: true
"""
# Test the closure implementation
proc map(n: var openarray[int], fn: proc (x: int): int {.closure}) =
for i in 0..n.len-1: n[i] = fn(n[i])
proc foldr(n: openarray[int], fn: proc (x, y: int): int {.closure}): int =
for i in 0..n.len-1:
result = fn(result, n[i])
var
myData: array[0..4, int] = [0, 1, 2, 3, 4]
proc testA() =
var p = 0
map(myData, proc (x: int): int =
result = x + 1 shl (proc (y: int): int =
return y + p
)(0)
inc(p))
testA()
for x in items(myData):
write(stout, x)
#OUT 2 4 6 8 10
|