SICP 习题 (2.1.4)拓展练习——初论

我只讨论练习2.15和2.16,前面的较简单。
2.15和2.16不能孤立的看,首先我们想想这个所谓区间运算的实质是什么?
没错,集合
我们重新定义加法
对于集合 A B
定义 C=A+B 为一切 x+y 构成的集合(其中 xA yB
减法,乘法,除法类似
也容易定义 C=f(A,B) 为一切 f(x,y) 构成的集合(其中 xA yB
考察 R=11/R1+1/R2 ,可以认为 R=f(R1,R2) ,而 f(x,y)=1x1+y1
自然对于 R=R1R2R1+R2 ,可认为 R=g(R1,R2) ,而 g(x,y)=xyx+y
当然因为电阻都是正数所以 f g可以认为是相等的

这时再回头看看Alyssa P.Hacker定义的区间运算,发现对于后一种运算,她是分开算的,即先算 R1R2 ,再算 R1+R2 ,最后将两个相除。
在看看其对于区间的运算,容易发现,在分开算的过程中, R1R2 时的变量和算 R1+R2 时的变量不同
也就是说Alyssa   P.Hacker的程序在算 R=R1R2R1+R2 的时候不是 R=g(R1,R2) ,而是 R=g1(R1,R2)g2(R1,R2) ,其中 g1(R1,R2)=R1R2 g2(R1,R2)=R1+R2
如此若定义 h=g1g2 ,则h就只能是:
h(x,y,z,w)=g1(x,y)g2(z,w)x,zR1,y,wR2
这样算出来的R当然是不真确的了,故而可以回答2.15,正确
至于2.16,第一问已经由上面解答
第二问可以回答:即使可以做到算术闭包,也必须使用户将要算的东西写成表达式,之后程序在对表达式求结果(简单地说就是不能像windows自带的计算器那样可以先按5/2得2.5在2.5*3,只能一次给出表达式然后直接得到一个联系于这个表达式的结果)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值