2017-03-06 89 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指令,它們工作在更精細的級別上,而不是包 - 這些指令是加載庫的入口。

相關問題