OCaml打包模块的好处有哪些?

7
最近的OCaml 3.12引入了一项一流的打包模块的功能,详情请参见特性说明

一流打包模块。

  • 新的类型表达式,用于打包模块:(module PT)
  • 新的表达式类型,用于将模块打包为一等值:(module MODEXPR : PT)
  • 新的模块表达式类型,用于将一等值解包为模块:(val EXPR : PT)
  • PT是形如SS with type t1 = ... and ... and type tn = ...S是指一个模块类型)的打包类型。
请问哪里可以找到使用此功能的有启发性的示例或文献?
1个回答

6
我认为其中一个典型的激励例子是只有在运行时才能获取信息,然后选择在基于相同签名的不同结构之间进行选择实现。例如,选择哈希表或平衡二叉树来实现Map。
有一些信息可以在这里找到:https://forge.ocamlcore.org/docman/view.php/77/112/leroy-cug2010.pdf 我认为OCaml的设计受到了Claudio Russo为SML开发的类似扩展的影响 - 例如,请参阅“Standard ML的一级结构”http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.34.8754&rep=rep1&type=pdf

2
据我所记,Moscow ML是第一个使用caml-light作为后端实现SML并实现了一流模块的编程语言。Moscow ML文档中适当的部分提到了分发文件mosml/examples/modules/{sieve.sml,array.sml,choice.sml,matrix.sml}作为示例。 - Pascal Cuoq
@Pascal 很好的示例参考。那就是我提到的 Claudio 扩展。 - RD1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接