我有兩個模塊。一個定義變量類型:Ocaml中的縮寫構造函數名稱
module A = struct
type foo = Bar of material | Baz | Boo
(* other stuff *)
end
,我想能夠使用foo
的變種既是建設者和在另一個模塊
module B = struct
type foo = A.foo (* I can abbreviate A.foo by assigning it a local alias *)
let f (x : foo) = match x with
| Bar m -> Bar (g m) (* Any way to abbreviate Bar and friends? *)
| Baz | Boo -> x
end
左側的側部,但每"referring to named objects"我有一個模塊路徑前綴的不同名稱:
let f (x : foo) = match x with
| A.Bar m -> A.Bar (g m)
| A.Baz | A.Boo -> x
有沒有辦法跳過避免ü唱歌模塊路徑短於open
ing並從A
拉動所有其他的東西?
輝煌。謝謝。 –
如果通過「幕後」工作,你所指的是[基於類型的標籤消除歧義的建議](http://gallium.inria.fr/~scherer/gagallium/resolving-field-names/),那麼(1 )它最終可能不被接受,(2)它應該適用於(非多態)變體構造函數以及記錄標籤。 – gasche
從3.12版本開始,OCaml中可以使用open in語法。 – didierc