11

प्रोग्रामिंग भाषाओं के पार, मैं अलग-अलग नामों के साथ इसी तरह composite types का सामना किया है:"शब्दावली प्रकार" क्या हैं, और कितने अस्तित्व में हैं?

  1. Optional/Maybe
  2. Any
  3. Variant/Sum
  4. Record/Product

लोग अक्सर अवधि शब्दावली प्रकार का उपयोग ,
अभी तक मैंने कभी भी "शब्दावली" प्रकार की परिभाषा नहीं देखी है।

क्या इस शब्द की ढीली परिभाषा है?
टाइप सिद्धांत और अन्य प्रोग्रामिंग भाषाओं को शब्दावली प्रकारों के बारे में क्या कहना है?

सब कुछ एक शब्दावली प्रकार से ऊपर है? क्या और भी हैं?

+8

क्या आप संदर्भ में इस्तेमाल किए गए शब्द "शब्दावली प्रकार" के लिए कोई लिंक/उद्धरण दे सकते हैं? मैंने इसे पहले कभी नहीं देखा है और मैं उत्सुक हूं अगर यह किसी उत्तर के लिए अधिक पृष्ठभूमि प्रदान करने में मदद करेगा। ये ज्यादातर [बीजगणित डेटा प्रकार] हैं (https://en.wikipedia.org/wiki/Algebraic_data_type)। –

+0

जैसा कि जॉन ने कहा, आपने इन शर्तों के संबंध में शब्दावली प्रकार कहां उपयोग किया है? इसके लिए इंटरनेट खोज करने के बाद भी कुछ नहीं आया है, – Dijkgraaf

+0

हमें संदर्भ दिखाता है लेकिन मुझे लगता है कि इसका मतलब है कि किसी विशेष प्रकार के संदर्भ में विभिन्न प्रकार की शब्दावली हैं! –

उत्तर

3

सामान्य रूप से प्रोग्रामिंग और शब्दावली प्रकार के संबंध में शब्दावली की मेरी समझ कुछ ऐसी चीज है जो विशिष्ट वस्तुओं के गुणों को अच्छी तरह से परिभाषित अर्थ के साथ देती है।

यहाँ हास्केल में कुछ उदाहरण हैं:

पर विचार करें Optional/Maybe प्रकार और एक शुद्ध समारोह है कि एक वेब सर्वर के HTTP जबाब लेता है और जबाब के कोड निकालता है।

getCode :: String -> Int 

अब मान लें कि जब हम इस समारोह को चलाते हैं तो हम नहीं जानते कि प्रतिक्रिया सफल थी या नहीं - कोड बिल्कुल मौजूद नहीं हो सकता है। कोड गायब होने पर हम मामले का प्रतिनिधित्व कैसे करते हैं? हम कुछ कृत्रिम मूल्य -1 या 0 असाइन कर सकते हैं या हम इस पूरे समारोह प्रकार बदल सकते हैं:

getCode :: String -> Maybe Int 

इसके अलावा Maybe रूपों एक Monad, Functor, Applicative, Foldable और हास्केल में अन्य typeclasses का एक समूह। प्रत्येक टाइपक्लास अपनी मौजूदगी/अनुपस्थिति का सम्मान करते समय प्रश्न में मूल्य में हेरफेर करने के लिए अतिरिक्त क्षमताओं को जोड़ता है।

Product/Sum हास्केल में टाइप जोड़े और Either a b के रूप में दर्शाए जाते हैं। दोबारा - Product या Sum के माध्यम से कुछ परिभाषित करना एक अच्छी तरह से परिभाषित अर्थ Product a b जोड़ता है - दोनों मान मौजूद होना चाहिए, Sum a b - एक मान मौजूद होना चाहिए और मुफ्त में कानूनों का एक समूह जोड़ना चाहिए।

+0

मुझे लगता है कि इस उत्तर में थोड़ा सवाल है, जो कि 'एक प्रकार का "शब्दावली" बनाता है?' 'इन प्रकारों के विपरीत क्या है?'। – Alec

+0

'अच्छी तरह परिभाषित अर्थ है'।गणित/प्रोग्रामिंग शब्दावली से परिचित लोगों के लिए "कम्यूटेटिव और एसोसिएटिव में यह ऑपरेशन" ऑपरेशन के बारे में बताता है, "चीज का प्रकार '' शायद सामान' है। – user8242965

संबंधित मुद्दे