두 개의 모듈이 있습니다. 하나는 변형 유형 정의Ocaml의 약어 생성자 이름
module A = struct
type foo = Bar of material | Baz | Boo
(* other stuff *)
end
을 나는의 생성자로 다른 모듈
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" I 당 모두 변형 foo
를 사용할 수 있도록하고 싶습니다 U를 방지 건너 뛸 수있는 방법이 있습니까
let f (x : foo) = match x with
| A.Bar m -> A.Bar (g m)
| A.Baz | A.Boo -> x
하십시오 모듈 경로로 변형 이름을 접두사해야 open
의 짧은 모듈 경로를 노래하고 A
에서 다른 모든 것들을 가져 오겠습니까?
브릴리언트. 감사. –
"뒷이야기"작업으로 [유형 기반 레이블 동음 이의 해제 제안] (http://gallium.inria.fr/~scherer/gagallium/resolving-field-names/)을 참조한 경우 (1) 그것은 결국 받아 들여지지 않을 것입니다. 그리고 (2) 그것은 레코드 라벨뿐만 아니라 (비 다형성) 변형 생성자에서도 작동해야합니다. – gasche
OCaml에서 'open in'문법을 ver 3.12에서 상향으로 사용할 수 있습니다. – didierc