OCaml打包模块的良好用途是什么?

OCaml打包模块的良好用途是什么?,ocaml,Ocaml,最新的OCaml 3.12引入了一系列一流的打包模块: 一流的软件包模块。 用于打包模块的新类型表达式:(模块PT) 新的表达式类型,将模块打包为一级值:(模块MODEXPR:PT) 一种新的模块表达式,将一级值解压为模块:(val EXPR:PT) PT是一种包类型,其形式为S或S,类型为t1=。。。而且。。。类型tn=…(S表示模块类型) 我在哪里可以找到使用此功能的激励示例或论文?我相信其中一个典型的激励示例是,根据仅在运行时可用的信息,在实现相同签名的不同结构之间进行选择 例如,选择

最新的OCaml 3.12引入了一系列一流的打包模块:

一流的软件包模块。

  • 用于打包模块的新类型表达式:
    (模块PT)
  • 新的表达式类型,将模块打包为一级值:
    (模块MODEXPR:PT)
  • 一种新的模块表达式,将一级值解压为模块:
    (val EXPR:PT)
  • PT是一种包类型,其形式为
    S
    S,类型为t1=。。。而且。。。类型tn=…
    S
    表示模块类型)

我在哪里可以找到使用此功能的激励示例或论文?

我相信其中一个典型的激励示例是,根据仅在运行时可用的信息,在实现相同签名的不同结构之间进行选择

例如,选择哈希表和平衡二叉树作为映射的实现

有关信息,请访问:


我相信OCaml设计受到了Claudio Russo对SML的类似扩展的影响-例如,据我记忆所及,“标准ML的一流结构”

莫斯科ML,一个使用caml light作为后端的SML实现,是第一个实现一流模块的。Moscow ML文档的相应部分引用了发行版中的文件mosml/examples/modules/{sieve.sml,array.sml,choice.sml,matrix.sml}作为示例。@Pascal很好地参考了示例。这是我提到的克劳迪奥的延伸。