Chinaunix首页 | 论坛 | 博客
  • 博客访问: 173587
  • 博文数量: 33
  • 博客积分: 761
  • 博客等级: 上士
  • 技术积分: 364
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-15 23:56
个人简介

梦想主义者

文章分类

全部博文(33)

文章存档

2012年(33)

分类:

2012-03-22 21:48:10

最近开始学习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

阅读(1303) | 评论(0) | 转发(0) |
0

上一篇:读书小记

下一篇:7-19

给主人留下些什么吧!~~