बाधा-आधारित प्रकार का बीजगणितीय डेटा के साथ आविष्कार


11

मैं एमएल वंशावली की अभिव्यक्ति आधारित भाषा पर काम कर रहा हूं, इसलिए इसे स्वाभाविक रूप से प्रकार की आवश्यकता है> :)

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

मेरे पास अब तक जो भी है वह आसानी से काम करता है; एक अभिव्यक्ति है, तो eहै a + b, e : Int, a : Intऔर b : Int। अगर eएक मैच है,

match n with
  | 0 -> 1
  | n' -> n' * fac(n - 1)`, 

मैं ठीक ही है कि अनुमान लगा सकते हैं t(e) = t(the whole match expression), t(n) = t(0) = t(n'), t(match) = t(1) = t(n' * fac(n - 1)और इतने पर ...

लेकिन जब मैं बीजीय डेटाटाइप्स की बात करता हूं तो मैं बहुत अनिश्चित हूं। मान लें कि कोई फ़ंक्शन फ़िल्टर की तरह है:

let filter pred list =
  match list with
    | Empty -> Empty
    | Cons(e, ls') when pred e -> Cons (e, filter ls')
    | Cons(_, ls') -> filter 

पॉलीमोर्फिक रहने के लिए सूची प्रकार के लिए, विपक्ष को प्रकार का होना चाहिए a * a list -> a list। तो, इन बाधाओं स्थापित करने में, मैं स्पष्ट रूप से मेरे बीजीय कंस्ट्रक्टर्स के इन प्रकार को देखने के लिए की जरूरत है - समस्या मैं अब बीजीय कंस्ट्रक्टर्स के कई का उपयोग करता है के 'संदर्भ संवेदनशीलता' है - मैं अपने बाधा समीकरणों में व्यक्त करते हैं कि aमें प्रत्येक मामले को एक ही होना चाहिए?

मुझे इसका एक सामान्य समाधान खोजने में परेशानी हो रही है, और मैं इस पर ज्यादा साहित्य नहीं खोज पा रहा हूं। जब भी मुझे कुछ ऐसा ही लगता है - अभिव्यक्ति आधारित भाषा, बाधा-आधारित प्रकार के निष्कर्ष के साथ - वे बीजीय डेटाटाइप्स और बहुरूपता की कमी को रोकते हैं।

किसी भी इनपुट बहुत सराहना की है!


@ Guy का मतलब यह नहीं है कि मैं कृतघ्नता से आवाज़ दे सकता हूं, लेकिन मैं एक बंद-शेल्फ समाधान की तलाश नहीं कर रहा हूं - क्या आपके पास कोई सुझाव है? अधिकांश मौजूदा डॉक्स जो मुझे मिल सकते हैं (जैसे कि एमएलआईए, ओमेक्एल ... पर आईआईएआईए के कागजात) जो मुझे चाहिए (और समझने में सक्षम हैं) की तुलना में अधिक व्यापक हैं।
क्रिश

मैं ATTAPL में एक अनुमान अध्याय के साथ शुरू करूंगा , मुझे लगता है कि वे एक सुलभ स्तर पर आपकी जरूरत की हर चीज पर चर्चा करते हैं।
गिल्स एसओ- बुराई को रोकें '

@ मुझे लगता है कि एटीटीएपीएल एकमात्र 'क्लासिक' पीएल किताब है जो मेरे बुकशेल्फ़ पर नहीं है: पी लेकिन धन्यवाद, मैं सोमवार को एक नज़र डालूंगा, मैं यूनी में एक मंजिल पर बैठता हूं, शायद 10 प्रतियां कार्यालय में वितरित की गई हैं: )
क्रिश

@ क्रिस क्या आपने कभी इस समस्या से निपटने के लिए एक सुलभ संसाधन पाया? एक "मिनी एमएल" का मेरा कार्यान्वयन वास्तव में इस समस्या पर अटका हुआ है ... मुझे लगता है कि मुझे एटीटीएपीएल ( pauillac.inria.fr/~fpottier/publis/emlti-final.pdf से प्रासंगिक अध्याय मिला है और बीजीय वर्ग पर स्किम्ड किया गया है। डेटा प्रकार, लेकिन मुझे डर है कि यह मेरे सिर पर थोड़ा सा है।
मचिअकिग

@spacemanaki हाँ, मैंने पाया है कि PDFs.semanticscholar.org/8983/… को इसके लिए एक उत्कृष्ट संसाधन होना चाहिए।
क्रिश

जवाबों:


2

देखें: मिनी एमएल विशेष रूप से टाइप इंट्रक्शन सेक्शन।

इसमें एक साधारण कार्यात्मक भाषा के पूर्ण पार्सर के लिए F # में नमूना कोड है। इससे भी महत्वपूर्ण बात यह है कि हिंडले-मिलनर एल्गोरिथ्म में टाइप इंट्रैक्शन सेक्शन लागू होता है जो कि ज्यादातर टाइप इंट्रेंस सिस्टम में पाया जाता है। लेखक हिंडले-मिलनर को समझने में मदद करने के लिए दो अन्य महत्वपूर्ण दस्तावेजों के लिंक भी प्रदान करता है; एक एक उच्च स्तरीय परिचय है और दूसरा एक पेपर है जो कोड में एल्गोरिथ्म के कार्यान्वयन का वर्णन करता है।


एकल लिंक आम तौर पर एक जवाब नहीं हैं। कृपया विस्तृत करें कि वहां क्या पाया जा सकता है और यह क्यों मदद करता है।
राफेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.