tôi đã xác định các giao diện và mô-đun sau:Phạm vi xây dựng của một mô-đun trong OCaml
module type TYPE =
sig
type t
end
module Type = (struct
type t =
| TBot
| T of int
| TTop
end: TYPE)
Bây giờ tôi nhận ra rằng Nếu tôi viết bên ngoài Type.T 5
, trình biên dịch sẽ cho tôi en lỗi Error: Unbound constructor Type.T
. Nếu tôi xóa chữ ký và giữ module, lỗi sẽ biến mất.
1) Vì vậy, câu hỏi đầu tiên của tôi là, làm thế nào để thay đổi chữ ký sao cho tôi có thể sử dụng các nhà thầu bên ngoài?
2) Một cách để xác định một hàm tạo rõ ràng như sau, bạn có nghĩ đó là cách thông thường không? Một bất lợi mà tôi có thể thấy bây giờ là nó không cho phép xây dựng TBot
hoặc 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) Luôn luôn cần thiết để bên ngoài có thể xây dựng một giá trị bên trong một mô-đun?