Strategies

Although the normal form may be unique, the order of reductions is important. The Strategy of evaluation defines the reduction sequence that a language implements.

The two most popular strategies are:

Different strategies may result in a different number of reductions steps, and take different paths through the expression's reduction graph.

Call-by-name always finds a value, if there is one, where Call-by-value is generally more efficient, but may fail to find a value.

Haskell uses a strategy called lazy evaluation, which guarantees that if an expression has a normal form, the evaluator will find it. Lazy evaluation = call-by-name + sharing.