(define (p) (p)) (define (test x y) (if (= x 0) 0 y))
があるときに
(test 0 (p))
はどうなるか。
正規順序の評価(normal-order evaluation)では、第一ステップとして完全に展開(しようと)するので
(test 0 (p))
に対して(p)を展開しようとするけど、(p)は(p)となるようなトートロジーな感じなので、展開は無限ループに陥る。
作用的順序の評価(applicative-order evaluation)では、最初から簡約を狙うので、(p)なんか見ずにif分岐条件が成立していることでとっとと0を返す。という感じの結果をBenはみる!