首页 > 其他 > 详细

SICP 习题 (1.34)解题总结

时间:2014-04-21 06:38:01      阅读:429      评论:0      收藏:0      [点我收藏+]

SICP 习题 1.34的题目比较特别一点,对于没有接触过高阶函数的同学们来说是个很好的学习机会。


题目是这样的,如果我们定义下面的过程:


(define (f g)

  (g 2))


那么就有:

(f square) => 4

因为有(f square) => (square 2) => 4


还有

(f (lambda (z) (* z (+ z 1)))) => 6


因为有

(f (lambda (z) (* z (+ z 1))))

=> ((lambda (z) (* z (+ z 1))) 2)

=> (* 2 (+ 2 1))

=> (* 2 3)

=> 6


那么,(f f)的结果会是什么样的呢?这就是题目要求我们回答的问题。


如果对高阶函数有准确的理解,做起来不算太难,可以一步一步推导:


(f f)

=> (f 2)

=> (2 2)

=>报错,因为2被当做运算符了。。。。。


SICP 习题 (1.34)解题总结,布布扣,bubuko.com

SICP 习题 (1.34)解题总结

原文:http://blog.csdn.net/keyboardota/article/details/19261513

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!