这个方案的含义是什么?

nan*_*din 5 scheme

我是Scheme的新手,通过查看SICP的练习1.5,这个表达式的含义/用法是什么?

(define (p) (p))
Run Code Online (Sandbox Code Playgroud)

谢谢!

Nic*_*kis 8

(define (p) (p))
Run Code Online (Sandbox Code Playgroud)

上面定义了一个p不带参数的函数,并以递归(无限)方式调用自身.

练习1.5是关于应用顺序与正常顺序评估.

(define (test x y)
  (if (= x 0)
       0
       y))

(test 0 (p))
Run Code Online (Sandbox Code Playgroud)

在applicative-order中,所有参数都被评估,然后它们被应用于test,所以如果解释器在这种特定情况下使用那种评估,程序将冻结.