值的 Ocaml 表示 - 原子

Ocaml representation of values - Atoms

我查看了一些 OCaml 值的内部表示。空数组的表示是 atom(0),即具有 tag=0size=0 的块。空的浮点数数组也由 atom(0) 表示。

有没有用tag > 0的原子表示的OCaml值?如果不是:OCaml 字节码集包含 ATOM n 指令的目的是什么?

标签 > 0 用于带参数的构造函数,这将使它们不是原子。另一方面,没有参数的构造函数存储为 int 而不是块,因此也不是原子。所以我认为没有使用 atom(0) 。除了...

有一个内联记录为空的构造函数怎么样?

# type t = A of int | B of { };;
Error: Syntax error

似乎不​​允许空记录。除了直接创建这样的块之外,我想不出另一种方法来创建带有标签的 0 大小的块。但这不会使用 ATOM 指令。