proc functional1(x,y:int):int {.closure.} =
return x+y
proc functional2(x,y:int):int {.closure.} =
result = functional1(x,y) ## breaks
#result = 0 ## doing this instead, works
type
ordinal {.pure.} = enum one, two
let fns = array[ordinal, proc(x,y:int):int]([functional1, functional2])
echo fns[ordinal.one](3, 5)
Use this:
proc functional1(x,y:int):int =
return x+y
proc functional2(x,y:int):int =
result = functional1(x,y)
let fns = array[ordinal, proc(x,y:int):int {.nimcall.}]([functional1, functional2])