【问题标题】:What are good uses of OCaml packaged modules?OCaml 打包模块有什么好的用途?
【发布时间】:2010-07-29 16:36:35
【问题描述】:

最近的 OCaml 3.12 引入了 feature 的一流打包模块:

一流的封装模块。

  • 新的类型表达式,用于打包模块:(module PT)
  • 新的表达式,将模块打包为一等值:(module MODEXPR : PT)
  • 新的模块表达式,将一等值解压缩为模块:(val EXPR : PT)
  • PT 是SS with type t1 = ... and ... and type tn = ... 形式的包类型(S 指的是模块类型)。

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

【问题讨论】:

    标签: ocaml


    【解决方案1】:

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

    例如,在哈希表和平衡二叉树之间进行选择作为 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

    【讨论】:

    • 据我记忆,Moscow ML,一个使用caml-light作为后端的SML实现,是第一个实现一流模块的。莫斯科 ML 文档的相应部分引用了示例分发中的文件 mosml/examples/modules/{sieve.sml,array.sml,choice.sml,matrix.sml}。
    • @Pascal 很好的例子参考。这就是我提到的克劳迪奥的扩展。
    猜你喜欢
    • 2016-01-10
    • 2011-07-02
    • 2010-09-20
    • 2021-09-20
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多