вообще, был приведен довольно плохой пример, из которого не совсем очевидно зачем это вообще может пригодится. да и названия типа foo bar не добавляют понятности.
постараюсь попонятнее:

Код AS3:
function getNeededFunction(type:int):Function
{
if (type == 1)
{
return function add(a:int, b:int):int
{
return a + b;
}
}
else if (type == 2)
{
return function multiplicat(a:int, b:int):int
{
return a * b;
}
}
}
var func1:Function = getNeededFunction(1);
var func2:Function = getNeededFunction(2);
trace(func1(8, 5)); //13
trace(func2(8, 5)); //40