【发布时间】:2019-01-16 11:44:27
【问题描述】:
我正在将 SML 起始代码从 Tiger book 转换为 OCaml。
让我困惑的是,在签名文件table.sig(下)中,没有提到IntMapTable,但函子可以在另一个文件中访问,没有任何限制。
(* table.sig *)
signature TABLE =
sig
...
end
(* table.sml *)
functor IntMapTable (...) : TABLE =
struct
...
end
(* symbol.sml *)
...
structure Table = IntMapTable(...)
...
我的理解是只有.sig文件中的代码可以被外部模块访问,而不是.sml文件中的代码。不是这样吗?
另外,OCaml 中的等效代码是什么样的?很尴尬,因为函子IntMapTable的结果类型是Table,是文件的封闭模块。
【问题讨论】: