High-level view
Normal-order defines a kind of lazy (non-strict) semantics, where values are only computed as needed
- This is not unlike short-circuit boolean computations
Applicative-order defines a kind of eager (strict) semantics, where values for functions are computed regardless of whether they are needed