Необходимо принять решение на основе значения:
(тест 0 (p))
, где тест определяется как:
(define (test x y)
(if (= x 0)
0
y))
и p определяется как:
(define (p) (p))
Когда я оцениваю (test 0 (p))
, интерпретатор заходит в бесконечный цикл, предполагая, что он оценивает p
.Это показывает оценка нормального порядка , потому что операнды оцениваются перед заменой параметров.SICP говорит, что LISP использует оценку аппликативного порядка.