【发布时间】:2011-07-21 06:09:16
【问题描述】:
我当前的项目使用具有 40 种不同类型(可区分联合)的 AST,并且该 AST 中的几种类型具有循环依赖关系。
类型不是很大,因此我将它们放在一个文件中,并为相互依赖的类型应用了type ... and ... 构造。
现在,我正在添加函数以在 AST 中的每个元素下进行一些计算。 因为函数很多,里面有几行代码,为了让源代码更清晰易读,我把这些函数分开放在不同的文件中。
在没有循环依赖的情况下没关系,当依赖函数在同一个文件中时也可以 - 在这种情况下我可以使用let rec function1 ... and function2 ... 构造。
但它不适用于我的情况。
另外,我错误地认为签名文件可以帮助我解决这个问题,但它们的行为与 C++ 不同
- 它们用于定义函数/类型访问模式(内部/公共),也可以在此处添加函数/类型注释头。
我看到的唯一可能的解决方案是将所有函数移动到一个文件并使用let rec ... and ... and ... and ... and ... 构造。
可能有人有不同的想法?
【问题讨论】:
-
根据此答案,无法跨文件拆分依赖函数:stackoverflow.com/questions/5396465/…
-
感谢您的链接 - 是的,我读到这是不可能的,但认为有人知道一个聪明的解决方法
标签: f# cyclic-dependency