Imaginez que j'ai une série de modules A1..An
B1..Bn
tous ensemble une unité de compilation complète. Maintenant, je définis un deux nouveaux modules avec ces modules imbriqués:Inclure tous les modules à l'intérieur d'un module en ocaml
(* A.mli *)
module A : sig
module A1
...
module An
end
(* A.ml *)
module A1 = A1
..
module An = An
(* B.mli *)
module B : sig
open A
module B1
...
module Bn
end
(* B.ml *)
module B1 = B1
..
module Bn = Bn
ainsi les modules originaux sont réexporté en utilisant des alias du module. Notez que les modules dans B
peuvent se référer aux types dans les modules dans A1..An
!
maintenant, je veux créer un nouveau module AB
telle que la signature est:
module AB : sig
module A1
...
module An
module B1
...
module Bn
end
Cependant, je ne veux pas écouter tous les modules individuels, pour réexporter le contenu. L'utilisation de -open
n'est pas autorisée non plus. Le mieux que je peux trouver est:
module AB : sig
include module type of struct include A end
include module type of struct include B end
end
Cependant, cela échouera comme nous perdons le lien entre, disons, le type A.A1.t
et A1.t
. Y a-t-il un moyen de réaliser ce que je veux? Merci.