我读了一个用 OCaml 编写的项目,但在这里找不到一些源代码:
type 'a node = {mutable parent: 'a node; mutable rank: int; label: 'a}
let singleton x =
let rec n = {parent=n; rank=0; label=x} in
n
这段代码是不相交集的一部分,但我不太了解递归函数。我曾经是一名 C++ 程序员,可以轻松地使用指针来处理父事物。
当我在 OCaml utop 中运行这段代码时,结果让我大吃一惊。它确实生成了许多节点。
由于生成了这么多节点,此代码是否会占用大量内存?编译器如何在不溢出
的情况下处理这个问题?