In mathematics, function application (or evaluation) is the act of taking a function and an input from its domain to obtain the corresponding value from its range. In this sense, function application can be thought of as the opposite of function abstraction. It is central to programming languages derived from lambda calculus, such as LISP and Scheme, and also in functional languages. It has a role in the study of the denotational semantics of computer programs, because it is a continuous function on complete partial orders. Function application is also a continuous function in homotopy theory, and, indeed underpins the entire theory: it allows a homotopy deformation to be viewed as a continuous path in the space of functions. Likewise, valid mutations (refactorings) of computer programs can be seen as those that are "continuous" in the Scott topology.
Representation Function application is usually depicted by juxtaposing the variable representing the function with its argument encompassed in parentheses. For example, the following expression represents the application of the function ƒ to its argument x.
f ( x ) {\displaystyle f(x)}
In some instances, a different notation is used where the parentheses aren't required, and function application can be expressed just by juxtaposition. For example, the following expression can be considered the same as the previous one:
f x {\displaystyle f\;x}
The latter notation is especially useful in combination with the currying isomorphism. Given a function f : ( X × Y ) → Z {\displaystyle f:(X\times Y)\to Z} , its application is represented as f ( x , y ) {\displaystyle f(x,y)} by the former notation and f ( x , y ) {\displaystyle f\;(x,y)} (or f ⟨ x , y ⟩ {\displaystyle f\;\langle x,y\rangle } with the argument ⟨ x , y ⟩ ∈ X × Y {\displaystyle \langle x,y\rangle \in X\times Y} written with the less common angle brackets) by the latter. However, functions in curried form f : X → ( Y → Z ) {\displaystyle f:X\to (Y\to Z)} can be represented by juxtaposing their arguments: f x y {\displaystyle f\;x\;y} , rather than f ( x ) ( y ) {\displaystyle f(x)(y)} . This relies on function application being left-associative. When mathematical notation is represented in a digital document, the invisible zero-width Unicode characters U+2061 FUNCTION APPLICATION and U+2062 INVISIBLE TIMES can be used to distinguish concatenation meaning function application from concatenation meaning multiplication.
As an operator Function application can be defined as an operator, called apply or $ {\displaystyle \$} , by the following definition:
f $ x = f ( x ) {\displaystyle f\mathop {\,\$\,} x=f(x)}
The operator may also be denoted by a backtick (`). If the operator is understood to be of low precedence and right-associative, the application operator can be used to cut down on the number of parentheses needed in an expression. For example;
f ( g ( h ( j ( x ) ) ) ) {\displaystyle f(g(h(j(x))))}
can be rewritten as:
f $ g $ h $ j $ x {\displaystyle f\mathop {\,\$\,} g\mathop {\,\$\,} h\mathop {\,\$\,} j\mathop {\,\$\,} x}
This can be equivalently expressed using function composition as:
( f ∘ g ∘ h ∘ j ) ( x ) {\displaystyle (f\circ g\circ h\circ j)(x)}
or even:
( f ∘ g ∘ h ∘ j ∘ x ) ( ) {\displaystyle (f\circ g\circ h\circ j\circ x)()}
if one considers x {\displaystyle x} to be a constant function returning x {\displaystyle x} .
… excerpt ends here. Continue reading the full article.

