【SICP练习】47 练习2.6

练习2.6

如果这道题还没有做的请务必要先自己思考并检验。如果没有能够求出来,也可以在看完我推导的one之后自己再来推导two

一开始我也不懂题目中的两个式子是什么意思,甚至连怎么用都不知道。但我猜测到是不是可以用这两个式子来构造出one,以及two,还有后面的无数多个。既然有了想法,那么就开工吧。我把在Edwin中写的截图下来,因为Edwin会自动缩进比较直观,比word好用些。



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




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

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

(define three

  (lambda (f)

     (lambda (x)

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

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

(define +

   (lambda (m)

      (lambda (n)

         (lambda (f)

             (lambda (x)

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

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





版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系本人。

posted @ 2015-02-22 13:44  nomasp  阅读(139)  评论(0编辑  收藏  举报