# Strict function

A strict function in the denotational semantics of programming languages is a function f where $f\left(\perp\right) = \perp$. The entity $\perp$, called bottom, denotes an expression which does not return a normal value, either because it loops endlessly or because it aborts due to an error such as division by zero. A function which is not strict is called non-strict. A strict programming language is one in which user-defined functions are always strict.
As an example, the if-then-else expression of many programming languages may be thought of as a function of three parameters. This function is strict in its first parameter, since the function must know whether its first argument evaluates to true or to false before it can return; but it is non-strict in its second parameter, because (for example) if(false,$\perp$,1) = 1, as well as non-strict in its third parameter, because (for example) if(true,2,$\perp$) = 2. However, it is jointly strict in its second and third parameters, since if(true,$\perp$,$\perp$) = $\perp$ and if(false,$\perp$,$\perp$) = $\perp$.