【SICP练习】47 练习2.6
练习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)))))))
闲的无聊就来写写”+“的展开式好了。
版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系本人。