कॉल-साइट आधारित प्रकार की खोज पर शोध?


9

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

वैसे भी, मुझे इस दृष्टिकोण पर कोई शोध प्राप्त करने का सौभाग्य नहीं मिला है, क्योंकि शायद मैं यह नहीं जानता कि मैं जो बात कर रहा हूं उसका वर्णन करने के लिए सही शब्दावली क्या है। कोई संकेत?


आप जो वर्णन कर रहे हैं, उसमें द्विदिश प्रकार के अनुमान के संकेत हैं, जब तक कि मैं गलत नहीं हूँ। हालांकि आप क्या करने की कोशिश कर रहे हैं, यह स्पष्ट करना।
डोमिनिक मुलिगन

क्या आप पूछ रहे हैं क्योंकि आप बहुरूपी कार्यों को करने का एक तरीका चाहते हैं?
9

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

जवाबों:


11

टाइप इंफ़ेक्शन वाली लगभग सभी प्रणालियाँ ऐसा करने के लिए कॉल-साइट जानकारी का उपयोग करती हैं। उदाहरणों में मानक ML, OCaml, F # और Haskell शामिल हैं। कई अन्य भाषाएं कॉल-साइट जानकारी का उपयोग करने के लिए जावा, C #, स्काला और टाइप्ड रैकेट जैसे पैरामीटर पैरामीटर इंस्टेंटेशन का उपयोग करती हैं। यह अक्सर "स्थानीय प्रकार का आविष्कार" नाम से जाता है।

मैं बस यह वर्णन करूंगा कि आप "टाइप इंफ्रेंस" के रूप में क्या देख रहे हैं, और आपको संभवतः यह देखना शुरू करना चाहिए कि "हिंडले-मिलनर" प्रणाली के रूप में क्या जाना जाता है। विकिपीडिया पृष्ठ मूल पत्रों को एक उचित परिचय और संकेत देता है।

स्थानीय प्रकार के आविष्कार के लिए शुरू करने का स्थान पियर्स और टर्नर का मूल पेपर है, जो TOPLAS 2000 संस्करण ( ACM , PDF ) में सबसे अच्छा पढ़ा जाता है ।


पियर्स और टर्नर पेपर बहुत ही ज्ञानवर्धक था, धन्यवाद। क्या आप कोड में वर्णित एल्गोरिथ्म के न्यूनतम कार्यान्वयन से अवगत हैं? मुझे लगता है कि अगर यह मौजूद है, तो इसे देखना बहुत दिलचस्प होगा।
डेरेक थर्न

मैं किसी भी न्यूनतम कार्यान्वयन के बारे में नहीं जानता। टाइप्ड रैकेट में एक है, और स्काला में एक है, लेकिन दोनों ही अधिक जटिल एल्गोरिदम को लागू करते हैं।
सैम टोबिन-होचस्टाट

0

आप चौराहे प्रकार है जो आप की तरह कुछ दे सकते हैं के लिए प्रकार सिस्टम पर एक नज़र ले जा सकते हैं a :: Int -> Int | Bool -> Bool, तो आप जानते हैं कि करने के लिए दो विशेषज्ञताओं Intऔर Boolपर्याप्त हैं, या एक नियंत्रण प्रवाह विश्लेषण के बाद सबसे सामान्य प्रकार अनुमान लगाने के लिए वास्तविक इकट्ठा करने के लिए एक सामान्य प्रकार निष्कर्ष उपयोग करने के लिए तर्क टाइप करें। वास्तव में हाइब्रिड एप्रोच हैं (सीएफए को एक प्रकार की प्रणाली के रूप में व्यक्त किया गया है और इसके विपरीत)।

अधिकांश सामान्य प्रकारों के बजाय कम से कम सामान्य प्रकार के इनफ़ॉर्मेशन पर शोध कार्य मौजूद हो सकते हैं, लेकिन मैं उनसे अनजान हूँ।

बहुरूपता को लागू करने की तकनीक के रूप में, दो समाधान मौजूद हैं: 1) विशेषज्ञता (सी ++ टेम्पलेट के बारे में सोचो 2) एक समान प्रतिनिधित्व धारणा (शून्य * के साथ सी-शैली संग्रह के बारे में सोचो)।

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

ध्यान दें कि हम यहां पैरामीट्रिक बहुरूपता के बारे में बात कर रहे हैं, और OO वर्चुअल मेथड कॉल पूरी तरह से अलग चीज हैं, जिसे उपप्रकार बहुरूपता कहा जाता है। ध्यान दें कि C ++ टेम्प्लेट्स पैरामीट्रिक पॉलीमॉर्फिज्म और डक टाइपिंग, दोनों का समर्थन करते हैं, जो कि पॉलीमॉर्फिज्म का दूसरा रूप है।


1
"OO वर्चुअल मेथड कॉल पूरी तरह से अलग चीज है जिसे ad-hoc polymorphism कहा जाता है" Ad-hoc polymorphism ओवरलोडिंग का दूसरा नाम है। आप इसे उप-प्रकार के बहुरूपता से भ्रमित करने लगते हैं।
रादु GRIGore 16

लेकिन उपवर्ग आवश्यक रूप से उपप्रकार नहीं हैं, क्या वे नहीं हैं? उदाहरण के लिए, एलएसपी को उप-होल्ड के लिए माना जाता है।
nponeccop

1
सच है, लेकिन बात के बगल में। "उपप्रकार बहुरूपता" मानक शब्द है। देखें en.wikipedia.org/wiki/Subtype_polymorphism जानकारी के लिए।
रादु ग्रिगोोरे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.