Perché funziona correttamente?Utilizzo di unioni aperte esterne al modulo che erano state definite in
module Account = struct
type account_type = Current of float | Savings of float
end
let sarah = Account.Current 100.0;;
Mentre la linea finale nel seguente produce un 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;;
Ovvero, perché non è possibile utilizzare il tipo di unione aperta all'esterno del modulo senza aprire il modulo? Devo dire che ho scoperto che cambiando la linea finale:
open Account;;
let pete = `Current 100.0;;
funziona bene, ma ovviamente questo è ingombrante se uso account_type
un sacco, o, in alternativa devo aprire Account
all'inizio di qualsiasi codice sezione dove viene utilizzato account_type
, il che significa che sacrificherei l'astrazione che otterrei usando una firma per Account
Ho navigato attraverso diversi tutorial di OCaml così come la documentazione INRIA, e non riesco a trovare alcuna menzione di come lo fai
E 'possibile evitare di dover aprire il modulo ogni volta che voglio usare un account_type
?
Grazie in anticipo,
Zach
Ah, ho provato a sfuggire il backtick con un backtick, causando così tanta confusione per tutte le persone coinvolte. – nlucaroni