Both CBV and CBN will reduce an expression to the same value as long as the expression is guaranteed to terminate. But what if a piece of code is not guaranteed to terminate?
If the CBV evaluation of an expression terminates, then the CBN evaluation of the same expression will also terminate.
If the CBN evaluation of an expression terminates, then the CBV evaluation of the same expression is not guaranteed to terminate.
Let’s look at an example of an expression which terminates under CBN, but not under CBV.