假设我有一些OCaml代码,我需要使用Str
模块。如果我用解释器运行代码,那么我必须让#load Str.cma
能够使用Str
模块。但是,如果我想本机编译代码,那么load
指令会导致错误。我怎样才能以这种方式导入模块? (a)一种包含可在两种模式下工作的模块的方法;或者(b)一种加载解释器模块的方式,编译器会忽略它,让我在命令行中指定它。在解释和编译模式下包含OCaml模块
1
A
回答
1
我不会把#load
放入源文件,它不是OCaml代码。这是对顶层的指示(当然你知道)。
一种可能性是将您需要的#load
命令添加到您的~/.ocamlinit
文件中。加载一些额外的模块并不会造成伤害,所以您可以在您处理不同事情时偶尔修改您的~/.ocamlinit
。
1
如果您希望能够做到ocaml my_code.ml
和my_code.ml
使用Str
模块,请执行ocaml str.cma my_code.ml
。
2
您可以像脚本描述的那样以脚本方式使用OCaml(使用ocaml
二进制文件,称为顶层)。脚本的优点是代码易于访问和更改。但是,一些问题就出来了:
- 在每次调用,这是相当快的,但是从最佳
- 远远加载需要的软件包的指令是特定于顶层,并与编译器不兼容的脚本字节码编译
- 如果你需要从opam必须全局安装OPAM OCaml的包管理器的许多包目前是Linux管理员的工作,而不是正式推荐
之一,所以有对ocaml的顶部没有兼容语法级别和编译器调用。顶层的命令行参数需要另一个包装脚本。
我的建议:
- 使用互动发展,特色探索顶层和测试
- 使用OPAM安装程序为您的包裹和编译器,这会给你更新工具
- 根据您的要求将您的脚本编译为字节码或本机代码,编译后的代码在平台内便携并且速度很快
一旦你知道如何指定组件,编译对于ocaml程序来说相当简单。
附注:有一个名为ocamlscript的opam软件包,它为您的软件包和依赖关系提供了一种特定的语法,但是它将脚本透明地编译到磁盘。也许这是你想要的 - 但需要全局安装opam。
相关问题
- 1. OCAML模块类型和模块编译
- 2. OCaml模块:包含AND open?
- 3. 在编译中包含vb.net模块
- 4. 包含编译代码和解释代码的“混合”Python模块的示例?
- 5. 在ocaml中包含模块中的所有模块
- 6. OCaml模块的单独编译
- 7. 需要python包和模块的解释
- 8. 在PrestaShop模块中包含翻译
- 9. requirejs模块包含模块
- 10. 错误而在释放模式编译
- 11. 在模块中包含模块
- 12. 如何在编译路径中包含JBOSS模块
- 13. 在CMakeLists中添加包含预编译模块的目录
- 14. OCaml中的模块和类
- 15. OCaml的模块和性能
- 16. python编译器包解释
- 17. OCaml模拟模块生成
- 18. 在Ruby中包含模块
- 19. 在verilog中包含模块
- 20. Erlang模块编译
- 21. ocamlc,模块编译
- 22. 在Eclipse模块中包含jar和Eclipse
- 23. OCaml:设置模块
- 24. OCaml映射模块
- 25. 编译器无法解析模块
- 26. 使用模块包括OCaml中
- 27. JSP包含和MVC模式
- 28. Javascript模块模式和Google Closure编译器
- 29. 跨编译单元的OCaml递归模块
- 30. 编译OCaml时不要链接所有标准库模块