А как насчет такого изврата:

Код AS3:
public function doFunction (f:Function, a:int,b:int):String
{
var q:Funtion = function(a:int, b:int):String
{
return f(a,b)
}
return q(a,b)
}
А, прочитал все дальше первого поста и понял, что это не то, что нужно

Но можно там вставить try catch и кидать ValueError при несоответствии типов аргументов или возвращаемого значения.