applicativeorder
Applicative order is a reduction strategy used in the lambda calculus and in the operational semantics of programming languages. It reduces the arguments of a function application before applying the function to them. In practice this corresponds to eager evaluation or call-by-value in many languages: evaluate all function arguments to values, then perform the application.
In contrast, normal order evaluation reduces the outermost part of an expression first. In lambda-calculus terms,
A classic illustration uses the term (λx. 0) Ω, where Ω = (λy. y y) (λy. y y). Under
In programming languages, applicative order aligns with call-by-value or strict evaluation. Languages like Scheme (with eager
History and context: the terms applicative order and normal order originate in discussions of reduction strategies