假設我有一些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時不要鏈接所有標準庫模塊