例如,
包括: include Ppx_core
打开: open Core.Std
要求: #require "compiler-libs.common"
并使用: #use "topfind"
include Module.Name模块定义中的语句将包括来自名为 的模块的所有定义Module.Name。这些定义将大致包含在复制粘贴时。如果include Module.Name出现在模块类型定义(又名签名定义)内部,则Module.Name应该是有效的(编译器已知的)模块类型。它将包括模块类型的定义(不包括任何类型共享约束)。
open Module.Name出现在模块实现和模块签名中的语句将允许您在Module.Name不使用完全限定名称的情况下引用 a 的定义(值、类型、子模块),即使用不带Module.Name前缀的短名称。
该#require语句根本不是语句,也不是 OCaml 语法的一部分。它是 OCaml 顶层的特殊指令 - 交互式循环。同 ipython 一样有自己的指令。该require指令将加载指定的包及其所有依赖项。此外,该指令不是标准 OCaml 顶级分发的一部分,而是由topfind作为 ocamlfind 工具包一部分的脚本添加的。该#use指令用于加载和评估脚本。例如#use "topfind"将从topfindOCaml 标准库文件夹加载和评估脚本。此脚本将注册require指令。还有#load和#load_rec 指令,在更细粒度的级别上工作,而不是包——这些指令旨在加载库。