值的 Ocaml 表示 - Atoms

标签 ocaml bytecode interpreter

我查看了一些 OCaml 值的内部表示。空数组的表示是 atom(0) ,即具有 tag=0 的块和 size=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 指令。

关于值的 Ocaml 表示 - Atoms,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42486650/

相关文章:

ocaml - 如何让 ocamlopt 链接到 glibc 2.5?

java - 现代 JVM 可以不同地优化同一类的不同实例吗?

haskell - 建立 AST 的非法 Monoid 实例不被认为是有害的?

javascript - 弄乱 Firefox Javascript 解释器有多容易?

Python 不被解释而是显示编译行为

ocaml - 如何在 ppx_deriving 中使用 jbuild 和 ppx_driver

compiler-errors - OCaml 用高阶函数标记参数顺序

ocaml - 将 OCaml 字符串转换为 format6

java - Java字节码中的 `Stack=1, Locals=1, Args_size=1`是什么意思?

java - JVM指令-sload