içinde yapıcı adlarını kısaltma İki modüllerim var. Bir varyant tipini tanımlar:Ocaml
module A = struct
type foo = Bar of material | Baz | Boo
(* other stuff *)
end
ve sitesindeki kurucular olarak ve başka bir modüle
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
sol-el tarafı olarak ama "referring to named objects" I başına iki varyantları foo
kullanabilecektir istiyorum u önlemek atlamak için herhangi bir yolu var mı
let f (x : foo) = match x with
| A.Bar m -> A.Bar (g m)
| A.Baz | A.Boo -> x
: bir modül-yolu ile varyant isimleri önek zorunda open
'un kısa yolundaki modül yolunu ve A
'dan diğer tüm diğer şeyleri mi çekiyorsunuz?
Parlak. Teşekkürler. –
Eğer "sahnelerin ardında" çalışması ile [tip tabanlı etiket belirsizliği önerisi] 'ne atıfta bulunuyorsanız (http://gallium.inria.fr/~scherer/gagallium/resolving-field-names/), o zaman (1) Sonunda kabul edilmeyebilir ve (2) kayıt etiketlerinin yanı sıra (polimorf olmayan) varyant kurucular için çalışmalıdır. – gasche
'open in' sözdizimi, 3.12 yukarıdan itibaren OCaml'de kullanılabilir. – didierc