我想定義一個接口PROPERTY
的至少2所述的設計,和模塊Type
和Formula
匹配它:模塊和接口
module type PROPERTY =
sig
type t
val top : t
val bot : t
val to_string: t -> string
val union: t -> t -> t
val intersection: t -> t -> t
end
module Type = (struct
type t =
| Tbot
| Tint
| Tbool
| Ttop
...
end: PROPERTY)
module Formula = (struct
type t =
| Fbot
| Ftop
| Fplus of int * Type.t
...
let union =
... Type.union ...
...
end: PROPERTY)
有兩個要求:
1)我想的Type
構造函數可以外部調用(所有節目如有必要)
2)的Formula
一些值的一部分包含的Types
值例如Fplus (5, Type.Tint)
的類型爲Formula
;也Formula
一些功能需要調用的Type
一些功能,例如,Formula.union
需要調用Type.union
誰能告訴我如何修改上述聲明fullfil我的要求是什麼?如果需要,可以添加額外的模塊...
驅動式註釋(正交gasche的回覆) :你可以很方便地用一個簽名賦值來編寫聲明,就像'module X:SIG = ...'一樣。 –