SICP 习题 (1.34)解题总结

88 篇文章 30 订阅
74 篇文章 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被当做运算符了。。。。。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值