第 1 章 构造过程抽象
- 1.1.1 表达式
- 1.1.2 命名和环境
- 1.1.3 组合式的求值
- 1.1.4 复合过程
- 1.1.5 对过程求值时的代换模型
- 1.1.6 条件表达式和谓词 练习1-1练习1-2练习1-3练习1-4练习1-5
- 1.1.7 实例:牛顿法求平方根 练习1-6练习1-7练习1-8
- 1.1.8 用作黑箱抽象的过程
1.1 程序设计的基本元素
- 1.2.1 线性递归与迭代 练习1-9练习1-10
- 1.2.2 树型递归 练习1-11练习1-12练习1-13
- 1.2.3 增长的阶 练习1-14练习1-15
- 1.2.4 求幂 练习1-16练习1-17练习1-18练习1-19
- 1.2.5 最大公约数 练习1-20
- 1.2.6 实例:素数检测 练习1-21练习1-22练习1-23练习1-24练习1-25练习1-26练习1-27练习1-28
1.2 过程与其产生的计算
- 1.3.1 过程作为参数 练习1-29练习1-30练习1-31练习1-32练习1-33
- 1.3.2 用 lambda 构造过程 练习1-34
- 1.3.3 作为通用方法的过程 练习1-35练习1-36练习1-37练习1-38练习1-39
- 1.3.4 作为返回值的过程 练习1-40练习1-41练习1-42练习1-43练习1-44练习1-45练习1-46
1.3 用高阶函数作抽象
第 2 章 构造数据抽象
- 2.1.1 实例:有理数的算术运算 练习2-1
- 2.1.2 抽象屏障 练习2-2练习2-3
- 2.1.3 数据意味着什么 练习2-4练习2-5练习2-6
- 2.1.4 扩展练习:区间算数 练习2-7练习2-8练习2-9练习2-10练习2-11练习2-12练习2-13练习2-14练习2-15练习2-16
2.1 数据抽象引导
- 2.2.1 序列的表示 练习2-17练习2-18练习2-19练习2-20练习2-21练习2-22练习2-23
- 2.2.2 层次性结构 练习2-24练习2-25练习2-26练习2-27练习2-28练习2-29练习2-30练习2-31练习2-32
- 2.2.3 序列作为一种约定的界面 练习2-33练习2-34练习2-35练习2-36练习2-37练习2-38练习2-39练习2-40练习2-41练习2-42练习2-43
- 2.2.4 实例:一个图形语言 练习2-44练习2-45练习2-46练习2-47练习2-48练习2-49练习2-50练习2-51练习2-52
2.2 层次性数据和闭包性
- 2.3.1 引号 练习2-53练习2-54练习2-55
- 2.3.2 实例:符号求导 练习2-56练习2-57练习2-58
- 2.3.3 实例:集合的表示 练习2-59练习2-60练习2-61练习2-62练习2-63练习2-64练习2-65练习2-66
- 2.3.4 实例:Huffman编码树 练习2-67练习2-68练习2-69练习2-70练习2-71练习2-72
2.3 符号数据
- 2.5.1 通用型算数运算 练习2-77练习2-78练习2-79练习2-80
- 2.5.2 不同类型数据的组合 练习2-81练习2-82练习2-83练习2-84练习2-85练习2-86
- 2.5.3 实例:符号代数 练习2-87练习2-88练习2-89练习2-90练习2-91练习2-92练习2-93练习2-94练习2-95练习2-96练习2-97
2.5 带有通用型操作的系统
第 3 章 模块化、对象和状态
- 3.3.1 变动的表结构 练习3-12练习3-13练习3-14练习3-15练习3-16练习3-17练习3-18练习3-19练习3-20
- 3.3.2 队列的表示 练习3-21练习3-22练习3-23
- 3.3.3 表格的表示 练习3-24练习3-25练习3-26练习3-27
- 3.3.4 数字电路模拟器 练习3-28练习3-29练习3-30练习3-31练习3-32
- 3.3.5 约束的传播 练习3-33练习3-34练习3-35练习3-36练习3-37
3.3 用变动的数据做模拟
- 3.4.1 并发系统中时间的本质 练习3-38
- 3.4.2 控制并发的机制 练习3-39练习3-40练习3-41练习3-42练习3-43练习3-44练习3-45练习3-46练习3-47练习3-48练习3-49
3.4 并发:时间是一个本质问题
- 3.5.1 流即延时的表 练习3-50练习3-51练习3-52
- 3.5.2 无穷流 练习3-53练习3-54练习3-55练习3-56练习3-57练习3-58练习3-59练习3-60练习3-61练习3-62
- 3.5.3 探索流计算模式 练习3-63练习3-64练习3-65练习3-66练习3-67练习3-68练习3-69练习3-70练习3-71练习3-72练习3-73练习3-74练习3-75练习3-76
- 3.5.4 流与延时求值 练习3-77练习3-78练习3-79
- 3.5.5 函数式程序的模块化和对象的模块化 练习3-81练习3-82
3.5 流
第 4 章 元语言抽象
- 4.1.1 求值器的内核 练习4-1
- 4.1.2 表达式的表示 练习4-2练习4-3练习4-4练习4-5练习4-6练习4-7练习4-8练习4-9练习4-10
- 4.1.3 求值器数据结构 练习4-11练习4-12练习4-13
- 4.1.4 作为程序运行这个求值器 练习4-14
- 4.1.5 将数据作为程序 练习4-15
- 4.1.6 内部定义 练习4-16练习4-17练习4-18练习4-19练习4-20练习4-21
- 4.1.7 将语法分析与执行分离 练习4-22练习4-23练习4-24
4.1 link-doc[“chapter4-1.html.pm”]{元循环求值器}
- 4.2.1 正则序与应用序 练习4-25练习4-26
- 4.2.2 一个采用惰性求值的解释器 练习4-27练习4-28练习4-29练习4-30练习4-31
- 4.2.3 将流作为惰性的表 练习4-32练习4-33练习4-34
4.2 Scheme的变形–惰性求值
- 4.3.1 amb 和 搜索 练习4-35练习4-36练习4-37
- 4.3.2 非确定性计算实例 练习4-38练习4-39练习4-40练习4-41练习4-42练习4-43练习4-44练习4-45练习4-46练习4-47练习4-48练习4-49
- 4.3.3 实现 amb 求值器 练习4-50练习4-51练习4-52练习4-53练习4-54
4.3 Scheme的变形–非确定性计算
- 4.4.1 演绎信息检索 练习4-55练习4-56练习4-57练习4-58练习4-59练习4-60练习4-61练习4-62练习4-63
- 4.4.2 查询系统是如何工作的
- 4.4.3 逻辑程序设计是数理逻辑吗? 练习4-64练习4-65练习4-66练习4-67练习4-68练习4-69
- 4.4.4 实现查询系统 练习4-70练习4-71练习4-72练习4-73练习4-74练习4-75练习4-76练习4-77练习4-78练习4-79
4.4 逻辑程序设计
第 5 章 寄存器机器里的计算
- 5.1.1 一种描述寄存器机器的语言 练习5-1练习5-2
- 5.1.2 机器设计的抽象 练习5-3
- 5.1.3 子程序
- 5.1.4 采用栈来实现递归 练习5-4练习5-5练习5-6
- 5.1.5 指令总结
5.1 寄存器机器的设计
- 5.2.1 机器模型 练习5-7
- 5.2.2 汇编器 练习5-8
- 5.2.3 将指令生成为执行程序 练习5-9练习5-10练习5-11练习5-12练习5-13
- 5.2.4 监视机器性能 练习5-14练习5-15练习5-16练习5-17练习5-18练习5-19
5.2 一个寄存器机器模拟器
- 5.4.1 显示控制器的核心
- 5.4.2 序列的求值与尾递归
- 5.4.3 条件、赋值和定义 练习5-23练习5-24练习5-25
- 5.4.4 求值器的运行 练习5-26练习5-27练习5-28练习5-29练习5-30
5.4 显示控制的求值器
- 5.5.1 编译器的结构 练习5-31练习5-32
- 5.5.2 编译表达式
- 5.5.3 编译组合式
- 5.5.4 指令序列的组合
- 5.5.5 编译代码的实例 练习5-33练习5-34练习5-35练习5-36练习5-37练习5-38
- 5.5.6 词法地址 练习5-39练习5-40练习5-41练习5-42练习5-43练习5-44
- 5.5.7 链接编译代码与求值器 练习5-45练习5-46练习5-47练习5-48练习5-49练习5-50练习5-51练习5-52
5.5 编译