Sec 1.1 符号约定
本节详细介绍了本文档其余部分使用的符号约定。
Sec 1.1.1 错误信息
当本手册使用语句“将发出错误信号”时,这意味着 Scheme 将调用 error,这通常会停止程序的执行并打印错误信息。
当本手册使用语句“这是一个错误”时,这意味着指定操作在 Scheme 中无效,但系统可能会,也可能不会发出错误信号。当本手册使用语句“必须”时,这意味着违反要求是错误的。
Sec 1.1.2 例子
本手册给出许多例子以说明表达式的计算。这些例子有一个共同的格式:左边显示计算表达式,中间是一个箭头,右边为表达式的值。例如:
(+ 1 2 )=> 3
有时,由于空间位置的原因,箭头和值会移到表达式下面。有时,我们不关心值是什么,这种情况下,箭头和值会被省略。
如果一个例子是演示错误结果,则会标记一个表示错误信息的标志 |error|:
(+ 1 'foo) |error| Illegal datum
下面这个例子是显示打印输出,采用 '-|' 标记:
(begin (write 'foo) 'bar)
-| foo
=> bar
当这个手册指出某个表达式的返回值未指定时,这意味着该表达式将对某个对象求值而不会发出错误信号,但是程序不应该以任何方式依赖该值。
Sec 1.1.3 条目格式
MIT/GNU Scheme 变量、特殊形式或过程的每个描述以以下格式的一行或多行标题开始:
template [ 类别 ]
这里,类别 为“变量”、“特殊形式” 或 “过程” 中的条目。template 的形式根据具体的类别进行解释。
变量 Template 由变量名组成。
参数 Template 由参数名组成。更多信息见 Sec 2.3 [动态绑定],第20页,
Sec 10.3 [参数],第159页。
特殊形式 Template 由特殊形式的语法关键词开始,后面跟一个特殊形式语法的描述。描述由
以下约定编写。
命名组件在印刷手册中以斜体显示,在信息文件中以大写字母显示。“噪音”关键
词,例如特殊形式 cond 中的关键词 else, 在印刷手册中以固定宽度的字体设置;
在信息文件中,它们是不可区分的。括号表示它们自己。
水平省略号 ( ... ... ) 用于描述重复组建。特别地,
thing ...
表示 0 个或多个事件,而
thing thing ...
表示 1 个或多个事件。
括号 [ ]表示可选组件。
几种特殊形式(例如: lambda)具有由一系列表达式组成的内部组件;通常,这
些表达式在特殊形式描述中指定的条件下按顺序求值。这个表达式的顺序通常特殊
形式的主体。
过程 Template 以过程绑定的变量名称开头,后面跟过程参数的说明。参数以 “lambda 列
表” 的表示法描述(参见 Sec 2.1 [ lambda 表达式 ],第15页),括号[ ] 用于表示
可选参数,省略号用于表示“其余”参数。
过程参数的名字在印刷手册中以斜体表示,在信息手册中以大写字母表示。
当参数以一个 Scheme 类型命名时,表示该参数必须是这个数据类型的对象。例
如:
cdr pair [ 过程 ]
表示标准Scheme 过程 cdr 接受一个参数,它必须是一个序对。
当参数类型错误时,许多过程会发出错误信号;通常,这个错误是一个类型条件:
condition-type:wrong-type-argument.
除了标准数据类型名称 (pair, list, boolean, string, 等等),以下名称作为参数也暗
示了类型限制:
* object : 任何对象
* thunk:无参数的过程
* x,y:实数
* q,n:整数
* k:确定的非负整数
一些例子:
list object . . . [ 过程 ]
表示标准Scheme过程 list 接受 0 个或多个参数,每个参数可以是任何 Scheme 对象。
write-char char [ output-port] [ 过程 ]
表示标准Scheme过程 write-char 接受一个字符,也可以调用一个字符 和一个输出端口。
(这部分估计描述不准确的地方很多,需要把后面的内容逐渐学懂以后,再来完善表述)