Module 在解释模式和编译模式中包括OCaml模块
假设我有一些需要使用Module 在解释模式和编译模式中包括OCaml模块,module,ocaml,Module,Ocaml,假设我有一些需要使用Str模块的OCaml代码。如果我用解释器运行代码,那么我必须放入#load Str.cma才能使用Str模块。但是如果我想以本机方式编译代码,那么load指令会导致错误。我如何以在两种情况下都能工作的方式导入模块 我在找两个 (a) 包括在两种模式下工作的模块的方法;或 (b) 一种加载解释器模块的方法,编译器将忽略该模块,让我在命令行上指定它。我不会将#load放入源文件,它不是OCaml代码。这是一个顶级的指导(当然你知道) 一种可能是将所需的#load命令添加到~/.
Str
模块的OCaml代码。如果我用解释器运行代码,那么我必须放入#load Str.cma
才能使用Str
模块。但是如果我想以本机方式编译代码,那么load
指令会导致错误。我如何以在两种情况下都能工作的方式导入模块
我在找两个(a) 包括在两种模式下工作的模块的方法;或
(b) 一种加载解释器模块的方法,编译器将忽略该模块,让我在命令行上指定它。我不会将
#load
放入源文件,它不是OCaml代码。这是一个顶级的指导(当然你知道)
一种可能是将所需的
#load
命令添加到~/.ocamlinit
文件中。加载一些额外的模块并没有什么坏处,因此您只能在处理不同的事情时偶尔修改~/.ocamlinit
。如果您希望能够执行ocaml my_code.ml
和my_code.ml
使用Str
模块,只需执行ocaml str.cma my_code.ml
就可以像您描述的那样,以脚本方式使用ocaml(使用ocaml
二进制文件,称为toplevel)。脚本的优点是代码易于访问和更改。但也出现了一些问题:
- 您的脚本是在每次调用时编译的字节码,这相当快,但远不是最佳的
- 加载所需包的指令特定于顶层,与编译器不兼容
- 如果您需要ocaml软件包管理器提供的众多软件包中的一个,则必须在全局范围内安装opam,这目前是linux管理工作,官方不推荐使用
- 使用顶层进行交互式开发、功能探索和测试
- 将opam安装程序用于包和编译器,这将为您提供可更新的工具
- 根据需要将脚本编译为字节码或本机代码,编译后的代码在平台内可移植且快速