sicp 1.6

if的新版本,用cond实现的new-if:

 

(define (new-if predicate then-clause else-clause)
  (cond (predicate then-clause)
		(else else-clause)))

 

重写的求平方根的程序:

 

(define (sqrt-iter guess x)
  (new-if (good-enough? guess x)
		  guess
		  (sqrt-iter (improve guess x)
					 x)))

 

如果是正则序求值,if的新版本可以正确运行。

但是应用序求值,则会陷入无限递归,不断调用(sqrt-iter (improve guess x) x)。作为特殊的语法形式if,和函数new-if的求值顺序是不同的。new-if会先对参数求值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值