X
पाइपों में आमतौर पर Void
को हास्केल पारिस्थितिक तंत्र के बाकी हिस्सों में लिखा जाता है, तो चलिए X = Void
का बहाना करते हैं। यह इस तरह से परिभाषित किया है:
data Void
और यह एक "एलिमिनेटर"
absurd :: Void -> a
absurd x = case x of {}
आप प्रकार Void
के कुछ है, तो है (और यह बल), तो कुछ गलत चला गया है। आपके प्रोग्राम ने एक त्रुटि उत्पन्न की है, या यह एक अनंत लूप में फंस गया है।
एक पाइप बनाना Void
प्रकार की चीजें कभी भी कुछ भी वैध (वैध) बनाने से रोकती हैं। इसे ()
प्रकार की चीजों का उत्पादन करने से यह चीजों का उत्पादन करने की अनुमति मिलती है, लेकिन ऐसी चीजें जिनमें कोई जानकारी नहीं होती है। वे मूल रूप से घड़ी की टिकटें हैं।
इनपुट पक्ष पर, Void
प्रकार की चीजों का उपभोग करने वाली पाइप इनपुट का इंतजार कर सकती है, लेकिन जैसे ही यह ऐसा करती है, यह अटक जाती है - कोई भी इसे कुछ भी खिला नहीं पाएगा। एक पाइप जो ()
प्रकार की चीजों का उपभोग करती है, प्रतीक्षा कर सकती है, लेकिन केवल घड़ी की टिकटें मिलती हैं।
ये सभी विकल्प उचित हैं। मुझे संदेह है कि गोंजालेज़ चाहता था कि टाइप सिस्टम सिस्टम को शुद्ध उपभोक्ता को गलती से एक शुद्ध उपभोक्ता को गलत तरीके से जोड़ने के लिए प्रतिबंधित करे, और एक त्रुटि प्राप्त हो जो ट्रैक करना मुश्किल हो। एक शुद्ध निर्माता बनाकर ()
का उपभोग करें, और एक शुद्ध उपभोक्ता Void
का उत्पादन करता है, इसलिए वह उन्हें गलत तरीके से हुक करना असंभव बनाता है।
आप इस प्रश्न को और साथ ही उत्कृष्ट उत्तरों को देखना चाहेंगे: ["डेटा.वॉइड 'में' बेतुका 'कार्य क्या है?"] (Http://stackoverflow.com/questions/14131856/ –