यह घोषणा करने का सबसे अच्छा तरीका क्या है कि घोषणा प्रकार-सही नहीं है? जीएडीटी के साथ, यह समझना मुश्किल नहीं है कि एक कन्स्ट्रक्टर एप्लिकेशन सही है या नहीं। यदि कोई व्यक्ति प्रकार की सुरक्षित संरचनाओं की एक पुस्तकालय लिख रहा है तो यह सुनिश्चित करना स्वाभाविक है कि अवैध निर्माण नहीं बनाया जा सकता है। इसलिए, एक परीक्षण सूट के एक हिस्से के रूप में, मैं यह सुनिश्चित करना चाहता हूं कि कुछ उदाहरण अवैध संरचनाओं को टाइप चेकर द्वारा खारिज कर दिया गया हो।हास्केल: उस कोड का परीक्षण कैसे किया जा रहा है?
उदाहरण के तौर पर, एक आकार-जांच वेक्टर प्रतिनिधित्व देखें। यह उन सामान्य समस्याओं से काफी सरल है जिन्हें मैं तय करना चाहता हूं, लेकिन परीक्षण विधि की जांच करने के लिए यह एक अच्छा उदाहरण है।
data Vector n t where
EmptyVec :: Vector 0 t
ConsVec :: t -> Vector n t -> Vector (n+1) t
// TODO: test that it does not typecheck
illegalVec = ConsVec 'c' (ConsVec "b" EmptyVec)
आप शायद 'मेटा-टेस्ट' करना चाहते हैं। एक छोटी लिपि लिखें जो आपके कोड को संकलित करने का प्रयास करती है और यह सुनिश्चित करती है कि संकलक कोड 0 से बाहर नहीं निकलता है। – Kris
मुझे लगता है कि आप यहां कुछ प्रकार के आश्रित प्रकारों को लागू करने की कोशिश कर रहे हैं? ... आप यहां किस भाषा एक्सटेंशन का उपयोग करना चाहते हैं? पहले भाग को काम करने के लिए। – Carsten
@ कार्स्टनकॉन्ग: 'टाइपऑपरेटर्स', 'जीएडीटीएस', 'डेटाकिंड्स', और 'जीएचसी। टाइपलेट' का आयात। –