- 前言
- 前言
- 来自SICP,1996年第二版的致谢
- 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函数定义表达式
- 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示例:霍夫曼编码树
- 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搜寻和搜寻
- 4.3.2非确定性程序的示例
- 4.3.3实施环境评估者
- 4.4逻辑编程
- 4.4.1演绎信息检索
- 4.4.2查询系统如何工作
- 4.4.3逻辑编程是数学逻辑吗?
- 4.4.4实施查询系统
- 5使用注册机进行计算
- 5.1设计套准机
- 5.1.1描述注册机的语言
- 5.1.2机械设计中的抽象
- 5.1.3子例程
- 5.1.4使用堆栈实现递归
- 5.1.5指令摘要
- 5.2寄存器机模拟器
- 5.2.1机器型号
- 5.2.2汇编器
- 5.2.3生成指令的执行功能
- 5.2.4监控机器性能
- 5.3储存分配和垃圾回收
- 5.3.1存储为向量
- 5.3.2维护无限内存的错觉
- 5.4显式控制评估者
- 5.4.1显式控制评估器的核心
- 5.4.2序列评估和尾递归
- 5.4.3条件,赋值和定义
- 5.4.4运行评估器
- 5.5编译
- 5.5.1编译器的结构
- 5.5.2编译表达式
- 5.5.3编译组合
- 5.5.4组合指令序列
- 5.5.5编译代码示例
- 5.5.6词汇寻址
- 5.5.7将编译后的代码与评估器接口
- 参考文献
- JavaScript改编