(在 OCaml 3.12 中引入)
|
构造 module type of module-expr 展开为为模块表达式 module-expr 推断出的模块类型(签名或函子类型)。为了使这种模块类型在许多情况下可重用,它故意没有被加强:抽象类型和数据类型没有与原始模块的类型明确关联。出于同样的原因,推断类型中的模块别名会被展开。
一个典型的用法,结合签名级别的 include 结构,是扩展现有结构的签名。在这种情况下,人们希望保持类型等于原始模块中的类型。这可以使用以下惯用法来完成。
然后签名 MYHASH 包含模块 Hashtbl 签名的所有字段(类型定义已加强),以及新的字段 replace。通过再次使用 include 结构可以轻松地获得此签名的实现,但这次是在结构级别
另一个不加强很有用的应用是为现有模块提供替代实现。
此惯用法保证 Myset 与 Set 兼容,但允许它以不同的方式在内部表示集合。