In the denotational semantics of programming languages, a function f is said to be strict if . Here , pronounced "bottom" and sometimes written bot or _|_, denotes the "value" of an expression which does not return a value, either because it loops endlessly or because it aborts due to an error such as division by zero. A function is non-strict if it is not strict.

Operationally, a strict function is one which always evaluates its argument.

Functions having more than one parameter may be strict or non-strict in each parameter independently.

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 and third parameters, because (for example) if(false,,1) = 1 and if(true,2,) = 2.

See also