SICP 1.41 lambda函数嵌套展开的思考
来源:互联网 发布:妙味课堂js课后练习 编辑:程序博客网 时间:2024/06/03 01:42
#lang scheme
(define (double f)
(lambda(x)(f(f x))))
(define (inc x)
(+ x 1))
(((double (double double)) inc) 5)
结果为21,说明Inc被调用了16次。
在直觉上,double调用两次,(double double)调用4次,(double (double double))调用16次。
但把表达式按照lambda展开,就非常复杂。
为了简化问题,考虑 (((double double)inc)5) 的展开:
(((lambda (x)(double (double x)))inc)5)
((double(double inc))5)//inc作为参数被带入
((double(lambda(x)(inc(inc x))))5)//这时形式上无法将(lambda(x)(inc(inc x)))继续带入到double中,考虑lambda函数是匿名函数,此时需要将他命名,为lam1.
((lambda(x)(lam1(lam1 x)))5)
(lam1(lam1 5))//带入5得9.
以上过程中有两点需要注意:
1.inc过程作为(lambda(x)(f(f x))) 中的x被带入
2.将匿名函数重新命名,才能继续展开
0 0
- SICP 1.41 lambda函数嵌套展开的思考
- Python 嵌套列表的排序(匿名函数lambda)
- 展开一个嵌套的列表
- SICP读书笔记1---练习1.22的思考
- SICP 2.2 嵌套映射
- 三层嵌套gridview 的折叠展开
- 三层嵌套gridview 的折叠展开
- Python递归展开嵌套的list
- 三层嵌套gridview 的折叠展开
- ScrollView嵌套全部展开显示的ListView
- 关于SEH局部展开的一点思考
- SICP学习笔3--lambda
- Python的lambda函数
- 有趣的lambda函数
- lambda函数的应用
- "lambda"和“bind”的初步思考
- Spark使用explode展开嵌套的JSON数据
- python 列表展开,适用于N层嵌套的列表
- 第十章 泛型算法(重点)
- Qt 新建线程的方法
- windows下添加类似ubuntu,centos下的右键CMD快捷菜单
- git在eclipse中的配置
- 阿里,华为,腾讯,小米2017实习面试经历
- SICP 1.41 lambda函数嵌套展开的思考
- 使用centos7安装Hadoop-2.7.3的一些小问题
- TensorFlow训练单特征和多特征的线性回归
- 对于java中的readUTF和writeUTF的注意事项
- nyoj 309 BOBSLEDDING 【贪心】
- Android Studio如何查看Gradle版本
- 经典计算机书籍-自制系列
- java字符与Unicode的转换
- 第八周——135. Candy