A function object is a first class value at run time, in the same way as numbers, lists and other data are values. This is different from
more traditional programming languages, where procedural and functional abstractions have another status than ordinary data.
The name 'closure' is related to the interpretation of free names in the body expression of the function.
Free names are used, but not defined in the body. In a function object (or closure) the free names are bound
in the context of the lambda expression. This is a contrast to the case where the free names are bound in
the context of the application of the function.