2017-03-06 152 views

回答

4
  • includere-exports在当前的所述模块的部件海峡ucture:您所在的模块将包含Ppx_core中的所有定义。
  • open使打字环境中的模块directly accessible的组件。您可以输入element而不是输入Core.Std.element
  • #require是一个Topfind命令,用于查找库并加载它,使其模块可供您访问。
  • #use表现得好像copying a full file直接进入您的顶层。

请注意,#关键字不是OCaml语言的一部分,但是是顶层命令:如果您尝试编译文件,它们将不起作用。

2

模块定义中的include Module.Name语句将包含来自名为Module.Name的模块的所有定义。这些定义将被大致包括在复制粘贴中。如果include Module.Name发生在模块类型定义(也称为签名定义)内部,Module.Name应该是有效的(编译器已知的)模块类型。它将包含模块类型的定义(不包括任何类型共享约束)。

open Module.Name语句都模块实现与模块的签名出现,让你参考的定义(值,类型,子模块)一Module.Name,而无需使用一个完全合格的命名,即,使用短名称没有Module.Name前缀。

#require声明根本不是声明,也不是OCaml语法的一部分。它是OCaml顶层的特殊指令 - 交互式循环。与ipython相同的是它自己的指令。 require指令将加载指定的包及其所有依赖项。此外,该指令不是标准OCaml顶层分发的一部分,而是由作为ocamlfind工具包一部分的topfind脚本添加的。 #use指令用于加载和评估脚本。例如,#use "topfind"将加载并评估OCaml标准库文件夹中的topfind脚本。该脚本将注册require指令。还有#load#load_rec指令,它们工作在更精细的级别上,而不是包 - 这些指令是加载库的入口。

相关问题