这个方案的含义是什么?

时间:2010-05-27 20:22:36

标签: scheme

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

(define (p) (p))

谢谢!

2 个答案:

答案 0 :(得分:8)

(define (p) (p))

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

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

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

(test 0 (p))

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

答案 1 :(得分:2)

'define'最初定义在chapter 1

  

程序定义的一般形式是

     

(define(< name>< formal parameters>)< body>)

在评估定义后,您会发现您的过程只是在调用自己。诀窍在于“测试”程序参数的评估顺序,正如您可以从练习的问题中找出答案。