最近的OCaml 3.12引入了feature一流的打包模块:
一流的软件包模块。
- 用于打包模块的新类型表达式:
(module PT)
- 新类型的表达式,用于将模块打包为第一类值:
(module MODEXPR : PT)
。- 新类型的模块表达式,用于将第一类值解压缩为模块:
(val EXPR : PT)
。- PT是
S
或S with type t1 = ... and ... and type tn = ...
形式的包类型(S
是指模块类型)。
我在哪里可以找到使用此功能的激励示例或论文?
答案 0 :(得分:6)
我认为其中一个规范的激励示例是基于仅在运行时可用的信息在不同结构之间进行选择来实现相同的签名。
例如,在哈希表和平衡二叉树之间进行选择,作为Map的实现。
有一些信息在:https://forge.ocamlcore.org/docman/view.php/77/112/leroy-cug2010.pdf
我认为OCaml设计受到Claudio Russo对SML的类似扩展的影响 - 例如“标准ML的一流结构”http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.34.8754&rep=rep1&type=pdf