更新时间:2024-06-06 19:11:13
封面
版权信息
作者简介
文前
译者序
序言
1984年版《计算机程序的构造和解释》的原序
前言
1996年SICP第2版的前言
1984年SICP第1版的前言
致谢
1996年SICP第2版的致谢
第1章 构造函数抽象
1.1 程序设计的基本元素
1.1.1 表达式
1.1.2 命名和环境
1.1.3 运算符组合式的求值
1.1.4 复合函数
1.1.5 函数应用的代换模型
1.1.6 条件表达式和谓词
1.1.7 实例:用牛顿法求平方根
1.1.8 函数作为黑箱抽象
1.2 函数与它们产生的计算
1.2.1 线性递归和迭代
1.2.2 树形递归
1.2.3 增长的阶
1.2.4 求幂
1.2.5 最大公约数
1.2.6 实例:素数检测
1.3 用高阶函数做抽象
1.3.1 函数作为参数
1.3.2 用lambda表达式构造函数
1.3.3 函数作为通用的方法
1.3.4 函数作为返回值
第2章 构造数据抽象
2.1 初识数据抽象
2.1.1 实例:有理数的算术运算
2.1.2 抽象屏障
2.1.3 数据是什么意思?
2.1.4 扩展练习:区间算术
2.2 层次性数据和闭包性质
2.2.1 序列的表示
2.2.2 层次结构
2.2.3 序列作为约定的接口
2.2.4 实例:一个图形语言
2.3 符号数据
2.3.1 字符串
2.3.2 实例:符号求导
2.3.3 实例:集合的表示
2.3.4 实例:Huffman编码树
2.4 抽象数据的多重表示
2.4.1 复数的表示
2.4.2 带标签数据
2.4.3 数据导向的程序设计和可加性
2.5 包含通用型操作的系统
2.5.1 通用型算术运算
2.5.2 不同类型数据的组合
2.5.3 实例:符号代数
第3章 模块化、对象和状态
3.1 赋值和局部状态
3.1.1 局部状态变量
3.1.2 引进赋值带来的利益
3.1.3 引进赋值的代价
3.2 求值的环境模型
3.2.1 求值规则
3.2.2 简单函数的应用
3.2.3 框架作为局部状态的仓库
3.2.4 内部定义
3.3 用变动数据建模
3.3.1 可变的表结构
3.3.2 队列的表示
3.3.3 表格的表示
3.3.4 数字电路模拟器
3.3.5 约束传播
3.4 并发:时间是一个本质问题
3.4.1 并发系统中时间的性质
3.4.2 控制并发的机制
3.5 流
3.5.1 流作为延迟的表
3.5.2 无穷流
3.5.3 流计算模式的应用
3.5.4 流和延迟求值
3.5.5 函数式程序的模块化和对象的模块化
第4章 元语言抽象
4.1 元循环求值器
4.1.1 求值器的核心部分
4.1.2 组件的表示
4.1.3 求值器的数据结构
4.1.4 把求值器作为程序运行
4.1.5 以数据为程序
4.1.6 内部声明
4.1.7 分离语法分析与执行
4.2 惰性求值
4.2.1 正则序和应用序
4.2.2 采用惰性求值的解释器
4.2.3 流作为惰性的表
4.3 非确定性计算
4.3.1 搜索和amb
4.3.2 非确定性程序实例
4.3.3 实现amb求值器