प्रारंभिक नोट:
यह प्रश्न कई सम्पादनों के बाद बंद हो गया क्योंकि मुझे सही शब्दावली का अभाव था जो मैं देख रहा था। सैम टोबिन-होचस्टाट ने एक टिप्पणी पोस्ट की, जिसने मुझे वास्तव में वही पहचान दी जो: प्रोग्रामिंग भाषाएं जो फ़ंक्शन रिटर्न मानों के लिए प्रतिच्छेदन प्रकारों का समर्थन करती हैं।
अब जब इस प्रश्न को फिर से खोल दिया गया है, तो मैंने इसे (उम्मीद के मुताबिक) अधिक सटीक तरीके से फिर से लिखकर इसे बेहतर बनाने का फैसला किया है। इसलिए, नीचे दिए गए कुछ जवाब और टिप्पणियां अब समझ में नहीं आती क्योंकि वे पिछले संपादन का संदर्भ देते हैं। (कृपया ऐसे मामलों में प्रश्न का संपादन इतिहास देखें।)
क्या कोई लोकप्रिय और दृढ़ता से टाइप की गई प्रोग्रामिंग लैंग्वेज (जैसे हास्केल, जेनेरिक जावा, सी #, एफ #, आदि) हैं जो फंक्शन रिटर्न वैल्यू के लिए चौराहे के प्रकारों का समर्थन करती हैं? यदि हां, तो कौन, और कैसे?
(यदि मैं ईमानदार हूं, तो मैं वास्तव में किसी को मुख्यधारा के भाषा में चौराहे के प्रकारों को व्यक्त करने का तरीका दिखाऊंगा, जैसे कि # # जावा।)।
मैं एक त्वरित उदाहरण देता हूं कि चौराहे के प्रकार क्या दिख सकते हैं, सी # के समान कुछ स्यूडोकोड का उपयोग करके:
interface IX { … }
interface IY { … }
interface IB { … }
class A : IX, IY { … }
class B : IX, IY, IB { … }
T fn() where T : IX, IY
{
return … ? new A()
: new B();
}
यही है, फ़ंक्शन fn
कुछ प्रकार का एक उदाहरण देता है T
, जिसमें से कॉल करने वाला केवल यह जानता है कि यह इंटरफेस को लागू करता है IX
और IY
। (यानी, जेनेरिक के विपरीत, कॉलर को ठोस प्रकार चुनने के लिए नहीं मिलता है T
- फ़ंक्शन करता है। इससे मुझे लगता है कि T
वास्तव में एक सार्वभौमिक प्रकार नहीं है, लेकिन एक अस्तित्वगत प्रकार है।)
पुनश्च: मुझे पता है कि एक बस को परिभाषित कर सकता है interface IXY : IX, IY
और बदले के प्रकार को बदल सकता fn
है IXY
। हालाँकि, यह वास्तव में एक ही बात नहीं है, क्योंकि अक्सर आप IXY
पहले से परिभाषित प्रकार के लिए एक अतिरिक्त इंटरफ़ेस पर बोल्ट नहीं लगा सकते हैं A
जो केवल लागू करता है IX
और IY
अलग से।
फुटनोट: चौराहे प्रकारों के बारे में कुछ संसाधन:
"टाइप सिस्टम" के लिए विकिपीडिया लेख में चौराहे प्रकारों के बारे में एक उपधारा है ।
बेंजामिन सी। पियर्स (1991) की रिपोर्ट, "प्रोग्रामिंग विद इंटर्सेशन टाइप्स, यूनियन टाइप्स, और पॉलिमोरिज़्म"
डेविड पी। कनिंघम (2005), "इंटरसेक्शन टाइप इन प्रैक्टिस" , जिसमें फोर्सिथे भाषा के बारे में एक केस स्टडी है, जिसका उल्लेख विकिपीडिया लेख में किया गया है।
एक स्टैक ओवरफ्लो प्रश्न, "यूनियन प्रकार और चौराहे प्रकार" जिन्हें कई अच्छे उत्तर मिले, उनमें से यह एक है जो ऊपर दिए गए खदान के समान चौराहे के प्रकार का एक छद्मकोड उदाहरण देता है।
T
में इंटरफ़ेस के रूप में व्यवहार करने की अनुमति देता है, I
जब यह इंटरफ़ेस के सभी तरीकों को लागू करता है, लेकिन उस इंटरफ़ेस को घोषित नहीं करता है"।
T
एक प्रकार को परिभाषित करता है, भले ही इसे फ़ंक्शन घोषणा के भीतर परिभाषित किया गया हो "कुछ प्रकार जो लागू / लागू होते हैंIX
औरIY
"। तथ्य यह है कि वास्तविक वापसी मूल्य उस का एक विशेष मामला है (A
याB
क्रमशः) यहां कुछ भी विशेष नहीं है, आप बस का उपयोग करकेObject
इसे प्राप्त कर सकते हैंT
।