मैं एक अंतरफलक PROPERTY
परिभाषित करना चाहते हैं की एक डिजाइन, और कम से कम 2 मॉड्यूल Type
और Formula
यह मिलान:मॉड्यूल और इंटरफेस
1) मैं चाहूँगा:
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)
दो आवश्यकताएं होती हैं Type
के निर्माताओं के बाहर (सभी कार्यक्रमों यदि आवश्यक हो तो)
2) Formula
के कुछ मूल्यों का एक हिस्सा Types
का मान होता है, कहा जा सकता है, उदाहरण के लिए Fplus (5, Type.Tint)
Formula
प्रकार का है; भी Formula
के कुछ कार्यों उदाहरण के लिए, Type
के कुछ कार्यों कॉल करने के लिए की आवश्यकता होगी, Formula.union
कॉल करने के लिए की जरूरत है Type.union
किसी को मुझे बताओ कि घोषणा से ऊपर मेरी आवश्यकताओं fullfil करने के लिए संशोधन करने के लिए कर सकता है? यदि आवश्यक हो तो अतिरिक्त मॉड्यूल जोड़े जा सकते हैं ...
ड्राइव द्वारा टिप्पणी (gasche करने के लिए उत्तर ओर्थोगोनल) : आप 'मॉड्यूल एक्स: एसआईजी = ...' के रूप में आसानी से हस्ताक्षर के साथ घोषणाएं लिख सकते हैं। –