Consider a value:
1 (a humble abstract symbol that represents a single entity of a type).
Let's perform an operation using the value
1, such as:
1 + 1 (which is important to note as equivalent to
2, but I digress).
There are other values that exist, such as
3, on which we can perform an operation using the same operator (such as
3 in the operation:
2 + 3).
Thus, we can abstract rules among operations and use letters to denote any value that it is defined to represent. For example, let
x represent any scalar value. Hence
x + x represents an addition operation between two instances of the same abstract value (which in this case can be shortened to
2x, which is a pattern that applies to any one-dimensional value (ie.
x + x = 2x in the domain of scalars)).
Let's collect operations on values (parameters) and label them with a name, and call this concept: functions. Therefore we can label an operation
2x + 3 with a name '
F' and specify the parameters that are operated on (which in this case is only one and is called
x). The shorthand notation of such a definition would be:
F(x) = 2x + 3
Now we can perform operations such as composition and inversion on previously-defined functions or even use names to represent abstract yet-to-be defined functions.
Following the patterns of abstraction illustrated, what is a further level of abstraction over functions called? And maybe even the name of the abstraction over the abstraction?