I tried to use _typeof() to get the type of a function, but I found if a lambda function modified a var in the environ, the type "function" would be returned instead of "function(<arg type list>:<result type>)". for example:
 
# cat lambda.pike
void t(function f)
{
write("%O\n",_typeof(f));
}
void main()
{
        int k;
        t(lambda(int ig){});
        t(lambda(int ig){k++;});
}
# pike lambda.pike
function(int : zero)
function
 
With second lambda function ,_typeof() just return "function", but for the first lambda it returned "function(int : zero)". The prototype of the two lambda function is SAME, then my question is "how can I get the prototype at runtime?"