Under normal-order, the interpreter returns 0. Under applicative-order evaluation, the interpreter will not terminate (regardless of the behavior of the special form if), since the expansion of (test 0 (p)) must occur before the if can be evaluated, and this expansion diverges.