SICP 第二章(构造数据抽象)
复合数据
在实际的程序设计中(模拟数学或现实系统),
操作(过程)要应用到的数据往往不是一个单独的基本类型数据,
而是多个基本类型数据复合起来的: 例如分数是由分子和分母确定起来的,
单一的分子和分母都不能称为分数.
而将分子和分母以某种方式复合起来比单独管理分子和分母具有更强的可读性,
减少了编码中的精力消耗;
同时加强分子和分母之间的关系(分子和分母的关系应当强于这两个符号之于别的数据的关系)也符合某种(哲学上的)道理.
为此, 我们需要构造一种抽象使得这两个数据被复合起来:
- 首先要有构造函数, 将这分子和分母复合为另一个新的数据
- 然后还要有选择函数, 因为在实际操作中我们需要操作分子和分母本身(来模拟分数的运算)而不是分数本身
- 最后, 分子和分母及其操作应当符合某些规则(即数学上分数运算上的规则)
这就是复合数据的需求: 将数据定义为一组适当的选择函数和构造函数, 以及为了使得这些过程成为一套合法表示, 它们就必须满足一组特定的条件.