Array of references rather than values

Nope. Its happening because you’re passing in arr[1] to the function call of myFunction (as arr[0]) which resolves to the getArgument function itself, not what you get when you call getArgument. And that is getting coerced into an int because that’s what you specified as the return value. What you want to be doing is

trace(arr[0]( arr[1]() ));

which will get you what you want (note the added parens given to arr[1] so its being called).