Non-strict programming allows the programmer to define non-strict functions.
A non-strict function is a function which which doesn’t require all its parameters to be evaluated completely before the function call. Functions with several parameters can be strict or non-strict in each parameter, as well as jointly strict in several parameters.
Even in strict programming languages some of control structures and operations can be thought of
as non-strict in some parameters. For example,
if-then-else control structure can be represented as a function of three parameters
F(condition, true-expression, false-expression).
This function is:
- strict in its first parameter (condition is necessary to decide which of expressions to return),
non-strict in each of second and third parameters (
F(true, true-expression, undefined) = true_expression,
F(false, undefined, false-expression) = false_expression),
and jointly strict in second and third parameters (
F(true, undefined, undefined) = F(false, undefined, undefined) = undefined).
OR operations are non-strict in each parameter and jointly strict in both parameters:
false AND undefined = undefined AND false = false,
true OR undefined = undefined OR true = true.
Non-strict programming is the opposite of strict programming.