Strategies

When reducing Lambda terms there are a few different strategies we can pick.

Applicative aka leftmost-innermost

This strategy always replaces inner terms first:

[λ] @set strategy applicative
@set strategy applicative

[λ] !reduce ((\x . (\y . y y) x) z)
(\x . x x) z

Normal aka leftmost-outermost

This strategy always replaces outer terms first:

[λ] @set strategy normal
@set strategy normal

[λ] !reduce ((\x . (\y . y y) x) z)
(\y . y y) z