次の値に基づいて決定する必要があります。
(テスト 0 (p))
ここで、test は次のように定義されます。
(define (test x y)
(if (= x 0)
0
y))
p は次のように定義されます。
(define (p) (p))
私が評価(test 0 (p))
すると、インタプリタは無限ループに入り、評価中であることが示唆されますp
。オペランドはパラメーターに置換される前に評価されるため、これは正規順序評価を示しています。SICP によると、LISP は適用順序評価を使用します。