Daniel P. Friedman
Mitchell Wand
译者的话
译名表
序
三版附言
前言
目标
组织
用法
致谢
1 归纳式数据集
1.1 递推定义的数据
1.1.1 归纳定义法
1.1.2 语法定义法
1.1.3 归纳证明法
1.2 推导递归程序
1.2.1 list-length
1.2.2 nth-element
1.2.3 remove-first
1.2.4 occurs-free?
1.2.5 subst
1.3 辅助过程和上下文参数
1.4 练习
2 数据抽象
2.1 用接口定义数据
2.2 数据类型的表示策略
2.2.1 环境的接口
2.2.2 数据结构表示法
2.2.3 过程表示法
2.3 递推数据类型的接口
2.4 定义递推数据类型的工具
2.5 抽象语法及其表示
3 表达式
3.1 规范和实现策略
3.2 LET:一门简单语言
3.2.1 定义语法
3.2.2 定义值
3.2.3 环境
3.2.4 定义表达式的行为
3.2.5 定义程序的行为
3.2.6 定义条件
3.2.7 定义 let
3.2.8 实现 LET 规范
3.3 PROC:有过程的语言
3.3.1 一个例子
3.3.2 表示过程
3.4 LETREC:支持递归过程的语言
3.5 定界和变量绑定
3.6 消除变量名
3.7 实现词法地址
3.7.1 翻译器
3.7.2 无名解释器
4 状态
4.1 计算的效果
4.2 EXPLICIT-REFS:显式引用语言
4.2.1 存储器传递规范
4.2.2 定义显式引用操作
4.2.3 实现
4.3 IMPLICIT-REFS:隐式引用语言
4.3.1 规范
4.3.2 实现
4.4 MUTABLE-PAIRS:可变序对语言
4.4.1 实现
4.4.2 可变序对的另一种表示
4.5 传参变体
4.5.1 按指调用
4.5.2 懒求值:按名调用和按需调用
5 传递续文的解释器
5.1 传递续文的解释器
5.2 跳跃式解释器
5.3 指令式解释器
5.4 异常
5.5 线程
6 续文传递风格
6.1 写出续文传递风格的程序
6.2 尾式
6.3 转换为续文传递风格
6.4 建模计算效果
7 类型
7.1 值及其类型
7.2 赋予表达值类型
7.3 CHECKED:带有类型检查的语言
7.3.1 检查器
7.4 INFERRED:带有类型推导的语言
7.4.1 代换式
7.4.2 合一器
7.4.3 找出表达式的类型
8 模块
8.1 简单模块系统
8.1.1 例子
8.1.2 实现简单模块系统
语法
解释器
检查器
8.2 声明类型的模块
8.2.1 例子
透明类型
模糊类型
8.2.2 实现
语法和解释器
8.3 模块过程
8.3.1 例子
8.3.2 实现
9 对象和类
9.1 面向对象编程
9.2 继承
9.3 语言
9.4 解释器
9.4.1 对象
9.4.2 方法
9.4.3 类和类环境
9.4.4 方法环境
9.4.5 练习
9.5 带有类型的语言
9.6 类型检查器
10 扩展阅读
11 SLLGEN解析系统
11.1 扫描
11.2 解析
11.3 SLLGEN 中的扫描器和解析器
定义扫描器
定义语法
SLLGEN的操作
arbno 和 separated-list 模板关键字
参考书目
索引