您的位置:首页 > 其它

【SICP练习】47 练习2.6

2015-02-22 13:44 239 查看
练习2.6

如果这道题还没有做的请务必要先自己思考并检验。如果没有能够求出来,也可以在看完我推导的one之后自己再来推导two。
一开始我也不懂题目中的两个式子是什么意思,甚至连怎么用都不知道。但我猜测到是不是可以用这两个式子来构造出one,以及two,还有后面的无数多个。既然有了想法,那么就开工吧。我把在Edwin中写的截图下来,因为Edwin会自动缩进比较直观,比word好用些。



同样的,two可以用(add-1 one)来求出。以下依旧是截图咯。



不知道大家能不能由此看出博主的操作系统呢?

lambda是不是很有意思呢?我们先不急着求题目剩余的部分也就是加法过程的定义,还是先回味一下好吧,哈哈。相信大家求出one的时候已经猜出了two,求出了two的时候就几乎可以肯定three、four、five了。three如下。也就通过不断的嵌套f。

(define three

(lambda (f)

(lambda (x)

(f (f (f x))))))

因此我们相信加法,比如4+5,就是将前者的4个f和后者的5个f累加成嵌套的9个f。因此我们将其表示出来。

(define +

(lambda (m)

(lambda (n)

(lambda (f)

(lambda (x)

(m f( n f x)))))))

闲的无聊就来写写”+“的展开式好了。




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: