第 11 章 OCaml 语言

2

本节描述 OCaml 程序操作的各种值。

2.1 基本值

整数

整数值是从 −230 到 230−1 的整数,即 −1073741824 到 1073741823。实现可能支持更宽范围的整数值:在 64 位平台上,当前实现支持范围从 −262 到 262−1 的整数。

浮点数

浮点值是以浮点表示的数字。当前实现使用符合 IEEE 754 标准的双精度浮点数,具有 53 位尾数和范围从 −1022 到 1023 的指数。

字符

字符值表示为 0 到 255 之间的 8 位整数。0 到 127 之间的字符代码按照 ASCII 标准解释。当前实现按照 ISO 8859-1 标准解释 128 到 255 之间的字符代码。

字符串

字符串值是字符的有限序列。当前实现支持包含最多 224 − 5 个字符(16777211 个字符)的字符串;在 64 位平台上,限制为 257 − 9。

2.2 元组

值的元组写成 (v1,, vn),表示值 v1vnn 元组。当前实现支持最多 222 − 1 个元素(4194303 个元素)的元组。

2.3 记录

记录值是带标签的值元组。记录值写成 { field1 = v1;; fieldn = vn } 将值 vi 与记录字段 fieldi 关联,其中 i = 1 … n。当前实现支持最多 222 − 1 个字段(4194303 个字段)的记录。

2.4 数组

数组是相同类型值的有限、可变大小的序列。当前实现支持包含最多 222 − 1 个元素(4194303 个元素)的数组,除非元素是浮点数(在这种情况下为 2097151 个元素);在 64 位平台上,所有数组的限制为 254 − 1。

2.5 变体值

变体值要么是常量构造器,要么是非常量构造器应用于多个值。前者写成 constr;后者写成 constr (v1, ... , vn ),其中 vi 被称为非常量构造器 constr 的参数。如果只有一个参数,则可以省略括号。

以下常量被视为内置常量构造器

常量构造器
false布尔值 false
true布尔值 true
()“单元”值
[]空列表

当前实现限制每个变体类型最多具有 246 个非常量构造器和 230−1 个常量构造器。

2.6 多态变体

多态变体是变体值的另一种形式,不显式属于预定义的变体类型,并遵循特定的类型规则。它们可以是常量,写成 `tag-name,也可以是非常量,写成 `tag-name(v)

2.7 函数

函数值是从值到值的映射。

2.8 对象

对象由一个隐藏的内部状态(它是实例变量的记录)和一组用于访问和修改这些变量的方法组成。对象的结构由创建它的顶级类描述。