ho definito la seguente interfaccia e il modulo:Ambito di costruttori di un modulo in OCaml
module type TYPE =
sig
type t
end
module Type = (struct
type t =
| TBot
| T of int
| TTop
end: TYPE)
Ora mi rendo conto che se scrivo di fuori Type.T 5
, il compilatore mi darà en errore Error: Unbound constructor Type.T
. Se rimuovo la firma e mantieni il modulo, l'errore scompare.
1) Quindi la mia prima domanda è: come modificare la firma in modo tale da poter utilizzare i costruttori all'esterno?
2) Un modo è definire esplicitamente un costruttore come segue, pensi che sia un modo convenzionale? Uno svantaggio che posso vedere ora è che non consente di costruire TBot
o TTop
.
module type TYPE =
sig
type t
val make : int -> t
end
module Type = (struct
...
let make (i: int) : t =
T i
end: TYPE)
3) E 'sempre necessario far fuori essere in grado di costruire un valore all'interno di un modulo?