A reduction strategy which delays evaluation of function arguments until their values are needed. A value is needed if it is an argument to a primitive function or it is the condition in a conditional. Call-by-need is one aspect of lazy evaluation.