Ho due moduli. Si definisce un tipo variante:Nomi di costruttori abbreviati in Ocaml
module A = struct
type foo = Bar of material | Baz | Boo
(* other stuff *)
end
e vorrebbe poter utilizzare foo
's varianti sia come costruttori e come sinistra-lati in un altro modulo
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
ma per "referring to named objects" I deve prefissare nomi variante con un modulo percorso:
let f (x : foo) = match x with
| A.Bar m -> A.Bar (g m)
| A.Baz | A.Boo -> x
c'è un modo per saltare evitare u cantare il percorso del modulo a corto di open
e inserire tutte le altre cose da A
?
Brillante. Grazie. –
Se con il lavoro "dietro le quinte" ci si riferisce alla [proposta di disambiguazione dell'etichetta basata sui tipi] (http://gallium.inria.fr/~scherer/gagallium/resolving-field-names/), quindi (1) potrebbe non essere accettato alla fine e (2) dovrebbe funzionare per costruttori di varianti (non polimorfici) così come per le etichette discografiche. – gasche
la sintassi 'open in' è disponibile in OCaml dalla versione 3.12 in poi. – didierc