在 ocaml 中循环构建,没有办法绕过它吗?

circular build in ocaml, no way around it?

所以我有一个 faction 类型,它有一个 pawns 的列表,但是 pawn 类型包括一个 link 到 faction

两者都在不同的模块中,在不同的文件中。将它们放在一个文件中会破坏我组织源代码的方式,而且无论如何它都不起作用

我看不到循环构建的任何方法,有解决方法吗?

我试过使用第三个模块,它可以是两者之间的 link,但这似乎太不方便了

如果两个编译单元(又名文件)相互依赖,那么最简单的方法是将这种依赖分解为第三个文件,并使这两个文件依赖于它。另一种解决方案是使有问题的部分多态化,并独立实例化具体类型,如果没有一个很好的例子,这个概念很难说明,所以如果你能向我们提供更多关于你的代码及其组织的见解,我们可能会更有帮助。