ocaml中的循环构建,无法绕过它?
所以我得到了一个ocaml中的循环构建,无法绕过它?,ocaml,circular-dependency,Ocaml,Circular Dependency,所以我得到了一个阵营类型,它有一个典当列表,但是典当类型包括一个记录类型,它是到阵营的链接 两者都位于不同的模块中,位于不同的文件中。将它们放在一个文件中会破坏我组织源代码的方式,而且它无论如何都不起作用 我看不出有什么办法可以绕过圆形建筑,有解决办法吗 我曾尝试使用第三个模块,它可以是两者之间的链接,但这似乎太不一致了如果两个编译单元(即文件)具有相互依赖性,那么最简单的方法就是将此依赖性分解到第三个文件中,并使这两个依赖于它。另一种解决方案是使有问题的部分具有多态性,并独立地实例化具体类型,
阵营
类型,它有一个典当
列表,但是典当
类型包括一个记录类型,它是到阵营
的链接
两者都位于不同的模块中,位于不同的文件中。将它们放在一个文件中会破坏我组织源代码的方式,而且它无论如何都不起作用
我看不出有什么办法可以绕过圆形建筑,有解决办法吗
我曾尝试使用第三个模块,它可以是两者之间的链接,但这似乎太不一致了如果两个编译单元(即文件)具有相互依赖性,那么最简单的方法就是将此依赖性分解到第三个文件中,并使这两个依赖于它。另一种解决方案是使有问题的部分具有多态性,并独立地实例化具体类型,这是一个没有好的示例就很难说明的概念,因此,如果您能为我们提供有关代码及其组织的更多见解,我们将更有帮助 解决方案可能是在第三个模块中定义这两种类型。在ocaml中不使用循环数据结构通常被认为是一种好的风格,因此您可能需要更改类型(例如,
pawn
可能有一个阵营名称
,这样您就可以确定两个pawn
是否在同一阵营中)。第二个问题是,如果您想在模块之间来回调用许多函数。但是在这种情况下,模块根本不是独立的,不应该放在单独的文件中。如果您包含说明问题具体性质的代码,那么提供建议就会容易得多。我可以说,根据你的描述,在这种情况下,你想要一对相互递归的数据类型对我来说似乎很奇怪。我想要pawn
在派系
列表中的主要原因是对它们进行迭代,我之所以希望典当能链接到他们的阵营
,是因为他们可以根据自己的阵营获得不同的奖金,但最后我想我找到了一个解决办法。基本上我做了一个新的阵营_enum
。阵营
和典当
都在他们的记录中有这一点