2
從多個模塊創建庫時,我無法找到一種很好的方法,可以在訪問所需的所有內容的同時對庫(外部接口)的用戶執行正確的信息隱藏內部接口。隱藏在OCaml中的外部和內部接口和信息
更具體地說,我有兩個模塊(文件a.ml [i]和b.ml [i])。在A中,我定義了一些類型t,這是我不想從用戶(外部接口)隱藏的內部結構。
module A : sig
type t
end
module A = struct
type t = float
end
在模塊B,然後我想用祕密型A.t
。
module B : sig
create_a : float -> A.t
end
module B = struct
create_a x = x
end
當然這並不編譯,因爲B的編譯單元不知道的A.t
類型。
解決方案,我知道,但不喜歡:
- 移動功能
create_a
到模塊A
- 複製的
A.t
的定義B
,並與一些external cheat : `a -> `b = "%identity"
有沒有其他方法可以知道B
中A.t
的類型,而不會將此信息泄露到庫的界面?
不錯!再見'包'選項。 – lambdapower