J'ai un fichier ML qui contient un module imbriqué. Par exemple:Affinement de la signature d'un module imbriqué dans la signature du parent
let f n = n + 1
module type M_type = sig
val g : int -> int
val h : int -> int
end
module M : M_type = struct
let g n = n + 2
let h n = n + 3
end
let j n = n |> M.h |> M.g |> f
Lorsque vous rédigez un MLI pour cette ML, je souhaite ne pas exposer M.h
, mais je ne veux exposer M.g
.
tels que les suivants:
module type M_type = sig
val g : int -> int
end
module M : M_type
val j : int -> int
La combinaison ci-dessus de ML et MLI ne compile pas.
L'idée est que mon module imbriqué M
contient certaines fonctions que je souhaite exposer à d'autres fonctions dans le module parent, mais pas à un utilisateur du module parent.
Existe-t-il un moyen légal d'y parvenir? S'il n'y en a pas, quelle est la meilleure alternative pour réaliser ce genre de rétrécissement de la signature?
Merci!
Pourquoi voudriez-vous ajouter 'reason' comme balise car il parle clairement d'un problème OCaml? Êtes-vous en train d'essayer de l'annoncer? Eh bien, je suppose que la balise 'ocaml' sera maintenant poluted par vos modifications ... – Lhooq