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 で実行すると、結果に驚かされます。多くのノードを生成しました。
このコードは非常に多くのノードを生成するため、多くのメモリを消費しますか?
コンパイラはオーバーフローなしでこれをどのように処理しますか?