可以通过sml
关键字在and
中定义相互依赖的数据类型。现在,我有两个互相引用的结构,看来我看到的错误是因为它们是相互递归的,但是我看不到有可能以这种方式添加and
的方法。
例:
structure Machine = struct
structure F = Frame
...
end
structure Frame = struct
...
reference to Machine.wordsize
end
是否可以使其起作用或设计与
sml
不兼容?我正在从Ocaml
移植代码,显然这可以在这里工作。 最佳答案
似乎不可能。我找到了答案here。
第1.2.0节Q: [Allyn Dimock] Recursive modules
中第二个问题的答案
许多人要求一种定义相互递归的方法
结构(例如,命令的相互递归抽象语法和
表达式,每个都在自己的模块中)。尽管可以这样做
相互递归模块集几乎肯定是
作为一个单独的编译单元进行编译,因此它们将不是真正的
“独立”模块。但是,递归定义涉及
仿函数的应用似乎要困难得多,并且相互之间
递归函子将更加令人难以置信。