एक गणितीय (श्रेणीबद्ध) प्रकार की कक्षाओं का वर्णन


14

एक कार्यात्मक भाषा को एक ऐसी श्रेणी के रूप में देखा जा सकता है, जहाँ इसकी वस्तुएँ प्रकार और आकारिकी उनके बीच कार्य करती हैं।

इस मॉडल में टाइप कक्षाएं कैसे फिट होती हैं?

मेरा मानना ​​है कि हमें केवल उन कार्यान्वयनों पर विचार करना चाहिए जो बाधा को संतुष्ट करते हैं जो कि अधिकांश प्रकार-वर्ग के पास हैं, लेकिन जो हास्केल में व्यक्त नहीं किए गए हैं। उदाहरण के लिए, हमें केवल उन कार्यान्वयनों पर विचार करना चाहिए Functorजिनके लिए fmap id ≡ idऔर fmap f . fmap g ≡ fmap (f . g)

या क्या टाइप कक्षाओं के लिए कोई अन्य सैद्धांतिक नींव है (उदाहरण के लिए टाइप किए गए लंबोदी गणना के आधार पर)?


1
आप जिस चीज के लिए मॉडल चाहते हैं, उसके बारे में आप अधिक स्पष्ट होना चाहते हैं। यदि आप कुछ ऐसा चाहते हैं जो खुली दुनिया की धारणा, उदाहरण के संकल्प के व्यवहार, विभिन्न जीएचसी, और सी के इंटरैक्शन का कठोरता से वर्णन कर सकता है, तो यह एक आदर्श संस्करण की तुलना में अधिक जटिल है। इसी तरह, ध्यान दें कि हास्क की चर्चा करते समय बोतलों को अक्सर नजरअंदाज कर दिया जाता है।
सीए मैककैन

4
टाइप कक्षाओं को हस्ताक्षर (सार्वभौमिक बीजगणित अर्थ में) के रूप में माना जा सकता है । एक ही हस्ताक्षर (एक ही प्रकार के वर्ग के तत्व) साझा करने वाली सभी संस्थाओं का संग्रह एक किस्म है
डेव क्लार्क

1
@DaveClarke: यह मेरे लिए तुरंत स्पष्ट नहीं है कि इस तरह के उच्चतर प्रकारों के प्रकारों का वर्णन कैसे किया जाए, लेकिन मैं सार्वभौमिक रूप से बीजगणित से परिचित नहीं हूं और आपके मन में होने वाले पत्राचार को गलत समझा जा सकता है ...
CA मैक्कन

1
@camccann: मुझे यकीन नहीं है कि पत्राचार कितना दूर चला जाता है। यह निश्चित रूप से एक अच्छी शुरुआत की तरह लग रहा था।
डेव क्लार्क

2
@camccann: बस उस आधार श्रेणी को बदल दें, जिस पर आप अपने बीजगणित को परिभाषित कर रहे हैं: बुनियादी प्रकार की कक्षाएं जैसे संख्या में हैकेल प्रकार की श्रेणी (या Hsk श्रेणी की वस्तुएं) पर हस्ताक्षर होते हैं, प्रकार के निर्माणकर्ताओं पर वर्ग प्रकार के रूपांतरकर्ताओं की श्रेणी में बीजगणित होते हैं हस्क से हास्क तक। ध्यान दें कि सार्वभौमिक बीजगणित को श्रेणी सिद्धांत में बीजगणित की धारणा द्वारा पूरी तरह से निर्वाह किया गया है। इसके अलावा: डेव: आपको अपनी टिप्पणी को एक उत्तर में बदलना चाहिए।
cody

जवाबों:


18

इस मॉडल में टाइप कक्षाएं कैसे फिट होती हैं?

संक्षिप्त उत्तर है: वे नहीं।

जब भी आप एक भाषा में coercions, प्रकार कक्षाएं, या तदर्थ बहुरूपता के लिए अन्य तंत्र परिचय, मुख्य डिजाइन मुद्दा आप का सामना करना पड़ता है जुटना

मूल रूप से, आपको यह सुनिश्चित करने की आवश्यकता है कि टाइपकास्ट रिज़ॉल्यूशन नियतात्मक है, ताकि एक अच्छी तरह से टाइप किए गए प्रोग्राम की एक ही व्याख्या हो। उदाहरण के लिए, यदि आप एक ही दायरे में एक ही प्रकार के लिए कई उदाहरण दे सकते हैं, तो आप संभावित रूप से इस तरह के अस्पष्ट कार्यक्रम लिख सकते हैं:

class Blah a where
   blah : a -> String 

instance Blah T where
   blah _ = "Hello"

instance Blah T where
   blah _ = "Goodbye"

v :: T = ...

main :: IO ()
main = print (blah v)  -- does this print "Hello" or "Goodbye"?

उदाहरण के आधार पर कंपाइलर बनाता है, या blah vतो बराबर कर सकता है । इसलिए, एक प्रोग्राम का अर्थ पूरी तरह से प्रोग्राम के सिंटैक्स द्वारा निर्धारित नहीं किया जाएगा, बल्कि कंपाइलर द्वारा किए गए मनमाने विकल्पों से प्रभावित हो सकता है।"Hello""Goodbye"

इस समस्या के लिए हास्केल के समाधान की आवश्यकता है कि प्रत्येक प्रकार के प्रत्येक टाइपेकेल के लिए सबसे अधिक एक उदाहरण है। यह सुनिश्चित करने के लिए, यह शीर्ष स्तर पर केवल उदाहरण घोषणाओं को अनुमति देता है, और इसके अलावा सभी घोषणाओं को विश्व स्तर पर दिखाई देता है। इस तरह, कंपाइलर हमेशा त्रुटि का संकेत दे सकता है यदि अस्पष्ट उदाहरण की घोषणा की जाती है।

हालाँकि, विश्व स्तर पर घोषणाएँ दिखाई देने से शब्दार्थ की संरचना टूट जाती है। आप पुनर्प्राप्त करने के लिए क्या कर सकते हैं , प्रोग्रामिंग भाषा के लिए एक विस्तृत शब्दार्थ प्रदान करना है - अर्थात, आप यह दिखा सकते हैं कि हास्केल कार्यक्रमों को बेहतर-व्यवहार वाली, अधिक रचनाशील भाषा में कैसे अनुवाद किया जाए।

यह वास्तव में आपको टाइपकास्टाइल संकलन करने का एक तरीका देता है, साथ ही - इसे आमतौर पर हास्केल हलकों में "साक्ष्य अनुवाद" या "डिक्शनरी-पासिंग ट्रांसफॉर्मेशन" कहा जाता है, और अधिकांश हास्केल संकलक के शुरुआती चरणों में से एक है।

टाइपकास्टेस भी एक अच्छा उदाहरण है कि कैसे प्रोग्रामिंग भाषा का डिज़ाइन शुद्ध प्रकार के सिद्धांत से अलग है। टंकण एक बहुत ही भयानक भाषा की विशेषता है, लेकिन वे प्रूफ-थ्योरिटिक दृष्टिकोण से काफी बीमार व्यवहार करते हैं। (यही कारण है कि अगाडा में टाइपकास्ट नहीं होता है, और क्यों कोक उन्हें इसके अनुमान संबंधी बुनियादी ढांचे का हिस्सा बनाता है।)


रनर अप कैंडिडेट के पास कौन सा शब्द है जो कि सांकेतिक शब्दार्थ है।
ओहद कम्मर

1
मुझे कोई पता नहीं है, अफसोस।
नील कृष्णस्वामी

क्या यह एक अतिरिक्त प्रश्न है?
ओहद कम्मर

@ नीलकृष्णस्वामी: क्या आपके पास कोई विचार है कि एमएल मॉड्यूल इसमें कैसे फिट होते हैं? और एजडा मॉड्यूल के बारे में क्या (जो किसी ने मुझे बताया "प्रथम श्रेणी")?
Li16

1
@ एलआईआई: एमएल मॉड्यूल और एजडा रिकॉर्ड बहुत बेहतर व्यवहार करते हैं, लेकिन एक टिप्पणी में व्याख्या करना बहुत जटिल है - उनके बारे में एक सवाल पूछें, और मैं (या किसी और) को समझाऊंगा।
नील कृष्णस्वामी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.