我有两个F#模块,比如A.fs中的A和B.f中的B模块。但是,当我使用模块B中的模块A时,F#看不到它。我已尝试open
指令的所有组合,即open A
,open MyNamespace.A
等等 - 没有任何帮助。我做错了什么?
答案 0 :(得分:35)
我猜。 文件在项目资源管理器中显示的顺序非常重要。 如果要使用模块B中的模块A,则A.fs必须出现在B.fs。
之前答案 1 :(得分:5)
由于F#不允许递归模块(IIRC),您唯一需要关心的是模块的顺序是正确的(您不能“转发声明”它们)以便您构建添加模块只需要前面的步骤。
如果您发现某个模块之间存在循环引用的情况,则必须将公共部分分解并删除循环。
这个问题可以澄清主题:F# mutual recursion between modules