正则序和应用序

1355阅读 0评论2012-03-22 yl1003
分类:

最近开始学习SCIP(计算机程序的构造和解释),开始就遇到一个问题。关于正则序和应用序。在课后习题1-5中,有如下定义:

(define (p) (p))

(define (test x y)

(if (= x 0)

0

y))

然后对如下表达式求值:

(test 0 (p))

问我们应用序求值和正则序求值的各自结果是什么?

先看正则序:正则序要求完全展开后在求值。此时test会返回为一个函数,0还是返回0,而(p)会进入死循环。

而应用序:则是先求值,(test 0 (p)) => (if (= 0 0) 0 (p))。此时if的判断为真,直接取第一个参数0,即可结束程序。

Powered by

上一篇:读书小记
下一篇:7-19