Ocaml值的表示 – 原子

我查看了一些OCaml值的内部表示.空数组的表示是原子(0),即标签= 0且大小= 0的块.空的浮点数也由原子(0)表示.

是否有任何OCaml值由具有标记>的原子表示0?如果不是:为什么OCaml字节码集包含ATOM n指令?

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

如果构造函数的内联记录为空?

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

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

点赞