2012-12-18 31 views
6

मैं एक अंतरफलक 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 करने के लिए संशोधन करने के लिए कर सकता है? यदि आवश्यक हो तो अतिरिक्त मॉड्यूल जोड़े जा सकते हैं ...

+0

ड्राइव द्वारा टिप्पणी (gasche करने के लिए उत्तर ओर्थोगोनल) : आप 'मॉड्यूल एक्स: एसआईजी = ...' के रूप में आसानी से हस्ताक्षर के साथ घोषणाएं लिख सकते हैं। –

उत्तर

6

मॉड्यूल घोषणा के लिए : PROPERTY सीलिंग लागू नहीं करें। यह लौटा मॉड्यूल से अतिरिक्त जानकारी छुपाता है। आप बल्कि उपयोग करना चाहिए:

module Type = struct .. end 
module Formula = struct .. end 

आप अभी भी जांच करने के लिए है कि Type और FormulaPROPERTY इंटरफेस को पूरा करना चाहते हैं, आपको लगता है कि अलग से कर सकते हैं:

let() = 
    ignore (module Type : PROPERTY); 
    ignore (module Formula : PROPERTY); 
    () 
+0

'प्रॉपर्टी' लागू करने का उद्देश्य यह है कि बाद में मैं 'प्रॉपर्टी' के साथ तर्ककर्ता के रूप में एक मजेदार बनाने जा रहा हूं: 'मॉड्यूल ZFUN = मज़ेदार (प्रोप: संपत्ति) -> संरचना ... अंत ' – SoftTimur

+3

आप नहीं करते 'टाइप' और' फॉर्मूला 'की घोषणा के स्थान पर अमूर्त इंटरफेस को मजबूर करने की आवश्यकता है। जब आप 'ZFUN' फ़ंक्शन' लागू करते हैं तो एक इंटरफ़ेस संतुष्टि जांच होगी। – gasche

+0

मैं देखता हूं ... धन्यवाद ... – SoftTimur