Functions are objects which can be created at run-time, and passed as parameters to other functions. It is possible to have functions that take function as arguments or return functions.
A built-in function funcall is used in this case. It calls its first argument on its remaining arguments: funcall function
&rest args => result* .