A function object represents a function at run time. A function object is created as the value of a lambda expression
A function object is also known as a closure.
Characteristics of function objects:
First class objects
Does not necessarily have a name
A function object can be bound to a name in a definition
Functions as closures:
Capturing of free names in the context of the lambda expression
Static binding of free names
A closure is represented as a pair of function syntax and values of free names
A function object can be
applied on actual parameters,
passed as a parameter to a function,
returned as the result from another function, and
organized as a constituent of a data structure