evaluate() - evaluate a function pointer
mixed evaluate(mixed f, ...)
If f is a function, f is called with the rest of the argu- ments. Otherwise, f is returned. evaluate(f, ...) is the same as (*f)(...).