中定義它爲什麼這個工作正常?在模塊外部使用開放式聯合,它們在
module Account = struct
type account_type = Current of float | Savings of float
end
let sarah = Account.Current 100.0;;
儘管下面的最後一行產生了Error: syntax error
?
module Account = struct
type 'a account_type = [> `Current of float | `Savings of float ] as 'a
end
let pete = Account.`Current 100.0;;
也就是說,爲什麼我不能在不打開模塊的情況下使用模塊外部的開放聯合類型?我應該說我已經發現,改變了最終行:
open Account;;
let pete = `Current 100.0;;
工作正常,但很明顯,如果我用account_type
了很多,這是麻煩的,或者我在的任何代碼開始打開Account
使用account_type
的部分,這意味着我會犧牲我通過使用簽名獲得的抽象Account
我已經瀏覽了幾個OCaml教程以及INRIA文檔,並且我找不到任何提及你如何做到這一點。
每當我想要使用account_type
時,是否可以避免打開模塊?
由於提前,
扎克
啊,我試着用倒退來逃避反作用,所以每個參與者都會造成大量的混亂。 – nlucaroni